Archived

This topic is now archived and is closed to further replies.

alex211169

class inside class with same class inside :)

Recommended Posts

hi! problem: class myclass2; // fwd-declaration class myclass1 // definition class 1 { myclass2 *pmc2; // OK because declared myclass2 mc2; // !!! Error: not defined } class myclass2 // definition class 2 { myclass1 *pmc2; // OK already declared myclass2 mc2; // OK already defined } any ideas ?

Share this post


Link to post
Share on other sites
Just declare myclass2 before myclass1 and change the forward declaration to class myclass1;


class myclass1; // fwd-declaration

class myclass2 // definition class 2
{
myclass1 *pmc2; // OK already (fwd)declared
myclass2 mc2; // OK already defined
}

class myclass1 // definition class 1
{
myclass2 *pmc2; // OK because declared
myclass2 mc2; // NOW it should be OK
}


HTH

Edited by - Chappa on December 18, 2001 1:57:23 PM

Share this post


Link to post
Share on other sites
that's the same problem vice versa

i guess it's a slip of the key that you declared myclass2 inside myclass2 (sorry, my fault)

the corrected version

class myclass2; // fwd-declaration

class myclass1 // definition class 1
{
myclass2 *pmc2; // OK because declared
myclass2 mc2; // !!! Error: not defined
}

class myclass2 // definition class 2
{
myclass1 *pmc1; // OK already declared
myclass1 mc1; // OK already defined
// ^^^^ not myclass2
}


humm?



Edited by - alex211169 on December 19, 2001 12:47:33 PM

Edited by - alex211169 on December 19, 2001 12:54:45 PM

Share this post


Link to post
Share on other sites
you will end up with an infinite recursive class definition. c''mon, now.

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.

Share this post


Link to post
Share on other sites
You should not need to delclare two classes in the way that you are trying to declare them. In fact, you should not declare two classes like you are attempting, because, as jenova said, you will get an infinite recursive class definition. i.e. when you get to the line where you create a class of either type, it will keep having to create new classes until you run out of memory and it throws an exception, or you forcibly stop the execution of the program.
If you change everything to pointers, then you should not have this problem, and your class declarations will work.

jw

Share this post


Link to post
Share on other sites