C++ error: ISO C++ forbids declaration of with no type

https://www.allegro.cc/forums/thread/594307

It is important to understand what the problem here is.

The actual problem is this. game.h includes player.h, and player.h includes game.h.

So, when the compiler enters game.h, the compiler will hit the #include and go to player.h. The compiler will then hit the #include “game.h” in player.h. However, since game.h has its include guards up, it will immediately exit, without having included the vital symbols into player.h.

Adding a forward declaration of the class game solved the problem because the class player never got to see the declaration of game.

Important Object Lesson: never include anything in a header file. Especially if that header can cause a circular reference. Always rely on forward declarations, and use Pimpl [en.wikipedia.org] to hide uses of objects that forward declarations work with.

你可能感兴趣的:(C++ error: ISO C++ forbids declaration of with no type)