On Thu, Aug 09, 2007 at 11:48:32AM -0700, tirengarfio wrote: > I have declared two classes: class CPrueba and class CPrueba2. > The class CPrueba contains a CPrueba2 object. > When i try to compile a main.cpp file with a CPrueba object inside using > "g++ main.cpp CPrueba.cpp CPrueba2 -o main" i get this error: > ???CPrueba2??? no nombra a un tipo (In spanish means 'CPrueba2 doesn't name a > type' or maybe "CPrueba2 is not a type"). CPrueba.h does not anticipate that you define CPrueba2 in CPrueba2.h unless you tell it so. (I think, correct me if I am wrong, this is not a property of the GCC compiler collection but of the C++ standard, e.g. the C standard says: "A source file together with all the headers and source files included via the preprocessing directive #include is known as a preprocessing translation unit.", WG14/N794 J11/97-158) So e.g. change headers to: #### CPrueba2.h #ifndef CPRUEBA2_H #define CPRUEBA2_H class CPrueba2 { private: int n; }; #endif #### CPrueba.h #include "CPrueba2.h" class CPrueba { private: CPrueba2 pru2; }; (For exercise, first simply do the change to CPrueba.h below and observe the error messages you get.) You may want to read up on headers e.g. in Chapter 4 of Eckels http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html Saludos, -- Holger Blasum / SYSGO AG / http://www.sysgo.com/