0

我试图在 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...
}

当我尝试编译它时,我收到一个错误:“类“AtomUtility”没有名为“BoundingBox”的标记成员。

4

2 回答 2

2

您在定义之后错过了分号,AtomUtility::BoundingBox并且您的编译器变得混乱并且诊断不佳。

您还试图将 a 传递AtomUtility::BoundingBox*给期望 a 的函数AtomUtility::BoundingBox

如果您的编译器诊断结果不佳,那么在不同的编译器上尝试您的代码通常很有用。有几个可以在线获得,例如ComeauClang或可编译的 pastebin,例如http://codepad.org

于 2012-08-13T19:15:45.197 回答
0

引用https://stackoverflow.com/a/6368118/1483826

您只能声明指向后面的类(...)的指针或引用。您不能拥有更高级别的对象。

要解决此问题,您需要在将其用作字段的类之前声明该结构。

于 2012-08-13T19:17:29.397 回答