c++ - Odd behavior with classes in separate files -


this question has answer here:

i have classes this:

world.h:

#ifndef world_h_ #define world_h_ #include "gameobject.h" #include <vector>  class world { public: std::vector<gameobject*> objects;  world(); virtual ~world(); void add(gameobject*); void initialize(); void update(); void render(); };  #endif /* world_h_ */ 

gameobject.h:

#ifndef gameobject_h_ #define gameobject_h_ #include "util/point.h" #include "world.h"  class gameobject { public: world *world; point *position; gameobject(); virtual ~gameobject();  virtual void update(); virtual void render(); };  #endif /* gameobject_h_ */ 

why give error:
"world.h, line 9 - 'gameobject' has not been declared " and
"world.h, line 13 - 'gameobject' not declared in scope"?

i using linux gcc 4.8.1 compiler.

you have circular include dependency. in case, can use forward declarations instead of includes:

#ifndef world_h_ #define world_h_ #include <vector>  class gameobject; // forward declaration  class world {   // before }; #endif 

and

#ifndef gameobject_h_ #define gameobject_h_  class world; class point;  class gameobject {   // before }; #endif 

then, include headers in implementation files need them.

for more details, see when use forward declarations.


Comments

Popular posts from this blog

Detect support for Shoutcast ICY MP3 without navigator.userAgent in Firefox? -

web - SVG not rendering properly in Firefox -

java - JavaFX 2 slider labelFormatter not being used -