我正在与这项任务作斗争:)
我有两个课程:海洋和网格。
当我在海洋中声明Grid的一个对象时:
unsigned int sharkCount;
Grid grid;
编译/抱怨说:
error C2146: syntax error : missing ';' before identifier 'grid'
你能用我提供的有限信息预测是什么产生了这个错误吗?
似乎海洋不喜欢Grid类。这可能是因为网格类的实施不佳。 BTW Grid有一个默认构造函数。
然而,错误发生在编译时间!。
编辑:他们每个都在单独的头文件中,我在Grid.h中包含了Grid.h。答案 0 :(得分:2)
我的第一个猜测是Grid
的定义在您尝试在Ocean
中使用时无法看到。通常情况下,如果您将每个文件放在自己的文件中,并且没有使用标题来允许每个文件被另一个“看到”,就会发生这种情况。
答案 1 :(得分:2)
我们需要其他来源,但有几个可能的答案:
答案 2 :(得分:1)
为了在你的另一个类中使用Grid,你需要在头文件中包含Grid的头部,或者执行类的前向声明,并在类中声明它作为指针然后在你的实例中实例化它。 cpp文件。
class Grid;
class Ocean {
Grid* grid;
};
或者最好:
class Ocean {
boost::shared_ptr<Grid> grid;
};