C++中的类定义问题

SIM*_*MEL 2 c++ class

我在文件中定义了一个类board.H:

class Board
{
private:
    ...

public:
    ...
};
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我希望有一个成员,它是一个指向Board对象的指针:

#include "board.H"

class Bear
{
private:
    Board* board;
    ...
public:
    ...
};
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它(在linux中使用g ++)时,我收到以下错误:

bear.H:15: error: ISO C++ forbids declaration of `Board' with no type
bear.H:15: error: expected `;' before '*' token
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Joh*_*itb 7

常见问题.您可能#include "bear.H"在"board.H"文件或"board.H"包含的文件中有一行.

因此,当你将"bear.H"包含在"board.H"中时,"bear.H"文件将被处理并尝试包含"board.H",但该文件已经被处理,因此标题保护"熊. H"将不再包括内容.但是,"bear.H"的处理没有领先的"Board"类定义.

  • @Iiya Melamed我建议你为此提出一个新问题.但作为一个提示 - 尽量不依赖于"board.H"中类Bear的定义.例如,"Bear*"不需要"Bear"类的定义,而只需要像"类熊"这样的前向声明.然后你不需要包含"bear.H"标题.同样适用于"void f(Bear b);" (但不是"void f(Bear b){}")和"Bear&". (2认同)