1

我正在与这个任务作斗争:)

我有两个课程:海洋和网格。

当我在海洋中声明一个网格对象时:

unsigned int sharkCount;
Grid grid;

编译器/投诉者说:

error C2146: syntax error : missing ';' before identifier 'grid'


你能用我提供的有限信息预测是什么导致了这个错误吗?

似乎 Ocean 不喜欢 Grid 类。这可能是因为网格类的实现不佳。BTW Grid 有一个默认的构造函数。

然而错误发生在编译时!

编辑:它们都在单独的头文件中,我在 Ocean.h 中包含了 Grid.h。

4

3 回答 3

2

我的第一个猜测是,在Grid您尝试在Ocean. 通常,如果您将每个文件都放在自己的文件中,并且没有使用标题来允许每个文件被对方“看到”,就会发生这种情况。

于 2010-05-22T06:23:46.040 回答
2

我们需要其余的源代码,但有几个可能的答案:

  • 网格通过宏(#define)被某些东西超载
  • 不包括 Grid 类定义。
于 2010-05-22T06:26:05.397 回答
1

为了在您的其他类中使用 Grid,您需要在标题中包含 Grid 的标题,或者对类进行前向声明并将其声明为类中的指针,然后在 .cpp 文件中实例化它。

class Grid;

class Ocean {
   Grid* grid;
};

或者最好:

class Ocean {
    boost::shared_ptr<Grid> grid;
};
于 2010-05-22T06:28:26.480 回答