Click here to Skip to main content
15,906,567 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
C++
//Class1.h
#include "Class3.h"
class Class1 { ... };

//Class2.h
#include "Class1.h" // error C2504: 'Class1' : base class undefined
class Class2 : public Class1 { ... };

//Class3.h
#include "Class2.h"
class Class3 { ... };


How can I solve this. Thanks a lot.
Posted
Updated 17-Apr-10 19:58pm
v2

That is because you didn't read my reply carefully.

You need to remove #include "Class3.h" from Class1.h and #include "Class2.h" from Class3.h.

-Saurabh
 
Share this answer
 
You have cyclic dependencies. You can use forward declaration to remove them. However, with forward dependencies you are allowed only class pointers in the header file.

//Class1.h
class Class3; // Forward declaration.
class Class1
{
   ...
   
private:
   
   Class3* mClass3;
};

<br />

//Class2.h
#include "Class1.h" // Cannot use forward declaration because of inheritance.
class Class2 : public Class1 { ... };

<br />

//Class3.h
class Class2;  // Forward declaration.
class Class3
{
   ...
   
private:
   
   Class2* mClass2;
};


-Saurabh
 
Share this answer
 
I tried
//Class1.h
#include "Class3.h"
class Class3;
class Class1 { ... };

//Class2.h
#include "Class1.h" // error C2504: 'Class1' : base class undefined
class Class2 : public Class1 { ... };

//Class3.h
#include "Class2.h"
class Class2;
class Class3 { ... };

but it doesn't work. Error C2504 as shown above
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900