Re: Newbie question: classes "A" and "B". A "B" object declared inside class "A"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux