在Xcode中使用类的前向声明时出错

时间:2011-02-22 16:17:59

标签: c++ xcode forward-declaration

我在尝试使用Xcode中某个类的前向声明时遇到了问题。

这是我的基本架构:

MyClassA.h:

class MyClassA{
  ... list of members and method prototypes ...
};

MyClassA.cpp:

#include "MyClassA.h"

--- list of methods for MyClassA ...

MyClassB.h:

class MyClassA; // forward declaration

class MyClassB{
  ... list of members and methods ...
  MyClassA* ptrToA;
};

MyClassB.cpp:

#include "MyClassB.h"

... list of methods for MyClassB ...

这在我的Windows机器上运行Visual Studio没问题,一直这样做。但是,在Xcode的Mac上,它给了我错误:

Forward declaration of 'struct MyClassA'

有什么想法吗?错误消息似乎没有多大意义,因为我将class plain称为day并且它返回时出现了关于struct的错误。是否在Xcode中不支持前向声明(非常简单的错误消息似乎表明这是问题,除了struct / class混淆)?我的项目编译为C ++,而不是C.是否有另一个项目设置我错过了可能导致这个?

感谢。

2 个答案:

答案 0 :(得分:1)

确保您拥有#include "MyClassA.h"  在MyClassB.cpp中,除非您不打算取消引用ptrToA,否则需要了解有关基础类型的任何内容。

答案 1 :(得分:0)

实际导致错误的代码行是什么?我的期望是您忘记在MyClassB.cpp中包含MyClassA.h,并且当您尝试new对象时,实际上会发生错误。

类是结构。他们只是默认将其成员标记为私有,而结构标记为公共成员。