我在文件board.H
中定义了一个类:
class Board
{
private:
...
public:
...
};
在另一个类中,我希望有一个指向Board
对象的成员:
#include "board.H"
class Bear
{
private:
Board* board;
...
public:
...
};
当我尝试编译它时(在linux中使用g ++)我收到以下错误:
bear.H:15: error: ISO C++ forbids declaration of `Board' with no type
bear.H:15: error: expected `;' before '*' token
我做错了什么?
答案 0 :(得分:7)
常见问题。您的“board.H”文件或“board.H”所包含的文件中可能有#include "bear.H"
行。
因此,当您将“bear.H”包含在“board.H”中时,会处理“bear.H”文件并尝试包含“board.H”,但该文件已被处理,因此标题保护“bear.H”将不再包含内容。但是,“bear.H”的处理没有领先的“Board”类定义。
答案 1 :(得分:0)
检查命名空间。
如果Board
与Bear
的名称空间不同,则需要在Bear.h中添加:
using <namespace>:: Board;