[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C++ / g++ question
>
>
> This is a little OT but I have a question for any C++ people who might be
> listening:
>
> I have a program that uses two classes : a matrix class and a vector
> class (ie that I wrote). I use templates to implement this so that my
> vectors/matrices can be use several data types ( eg int, float, double )
> as their fields.
>
> I have it split up like this:
>
> vector.h
> matrix.h
> vector.cpp
> matrix.cpp
> main.cpp
>
> g++ -o matrix vector.cpp matrix.cpp main.cpp
Quite simply the compiler is producing three nice little .o's and
handling only one of them to the linker.
The following would work:
g++ -c *.cpp
g++ -o matrix vector.o matrix.o main.o
>
> bombs with error messages from ld (no errors from the compiler). However,
> if I put
>
> #include "vector.cpp"
> #include "matrix.cpp
>
> in the top of main.cpp, then
>
> g++ -o matrix main.cpp
>
Here all the cpp files are mixed by the precompiler into a big one, so
there all the functions are in the intermediate .o created by the
compiler.
> works as advertised
>
> AFAIK, #including .cpp files is not "standard practice". Or is it ? Am I
> missing something ?
>
It is legal but considered bad practice for readability/mantainability
--
Jean Francois Martinez
Project Independence: Linux for the Masses
http://www.independence.seul.org