Advertisement

C++ Class help, please

Started by October 05, 2000 05:45 PM
2 comments, last by Blackstream 24 years, 3 months ago
Okay, its like this. I have two classes (EDDrawMain, and EDDrawSurface) I''m using to wrap DirectX. EDDrawMain uses EDDrawSurface as its data memembers for the primary surface and the backbuffer. EDDrawSurface uses EDDrawMain in order to initialize itself. See my problem yet? When I try to make the two header files include each other, my compiler looks at EDDrawMain.h and says that EDDrawSurface isn''t a valid identifier... even though it includes the class header file. Basically, I need to know how to have Class A include B AND Class B include A. I hope there is a way. -Blackstream -Blackstream "See you later, I'm going to go grab a few Bytes. I'm so thirsty, I could drink a whole data stream."
-Blackstream Will you, won't you, will you, won't you, won't you take my virus?-The Mad HackerBlackstream's Webpage
Not sure if this is what you mean, but to get 2 classes to include each other, you must ''declare'' one (or both) of the classes before the classes themselves. eg


class classA; // these lines declare that the classes exist
class classB; // and will be implemented somewhere later in code

class classA
{
public:
classB *classBInstance;
}

class classB
{
public:
classA *classAInstance;
}

This is similar to when you declare functions in a header file and define them later.

Cel
Cel aka Razehttp://chopper2k.qgl.org
Advertisement
Can you remove EDDrawMain.h from the header file for EDDrawSurface?

Put EDDrawMain.h in the EDDrawSurface.cpp file.

Also, in your EDDrawMain.h, remove the
    #include EDDrawSurface    

and replace with

class EDDrawSurface; 
Okay, thanks, I''ll try that. I was hoping I wouldn''t have to stuff them all into the same header, but it is better than making the classes a little illogical so that only Class A needs Class B by moving part of B to A. I actually tried the

class ClassA;

thing, but then again, I think my problem was not that they weren''t defined, but since my files could only be included once, ClassA got B, but B didn''t get A. Does that make sense?


--------------------------------------------------------------
-Blackstream

Don''t you dare run with sharp uninitialized addresses pointing to who knows where! You could trip, and Poke() something out!

-What the Motherboard says to her kids
-Blackstream Will you, won't you, will you, won't you, won't you take my virus?-The Mad HackerBlackstream's Webpage

This topic is closed to new replies.

Advertisement