我正在尝试在C ++类中定义一个公共结构,并且无法弄清楚如何使其编译。在我的标题中,我有以下内容:
class AtomUtility
{
public:
struct BoundingBox;
void doWork(struct AtomUtility::BoundingBox bounds);
};
来源:
#include"AtomUtility.h"
struct AtomUtility::BoundingBox
{
double xMin, xMax;
};
int main()
{
AtomUtility::BoundingBox *myBox = new AtomUtility::BoundingBox;
myBox->xMin = 0;
myBox->xMax = 10;
AtomUtility *myUtility = new AtomUtility;
myUtility->doWork(*myBox);
delete myUtility;
}
void AtomUtility::doWork(struct AtomUtilty::BoundingBox bounds)
{
//do things...
}
当我尝试编译它时,我收到一个错误:“class”AtomUtility“没有名为”BoundingBox“的标记成员。
答案 0 :(得分:2)
在AtomUtility::BoundingBox
的定义之后你错过了分号,你的编译器变得混乱并且诊断不佳。
您还尝试将AtomUtility::BoundingBox*
传递给期望AtomUtility::BoundingBox
如果编译器提供的诊断信息很差,那么在不同的编译器上尝试代码通常很有用。有几种可在线获取,例如Comeau,Clang或编译的pastebin,例如http://codepad.org
答案 1 :(得分:0)
引用https://stackoverflow.com/a/6368118/1483826:
你只能声明指针或引用后面的类(...)。你不能拥有后期课程的对象。
要解决此问题,您需要在类之前声明结构,并将其用作字段。