繁体   English   中英

c ++类中的公共结构

[英]Public struct inside c++ class

我正在尝试在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“的标记成员。

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

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

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

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

你只能声明指针或引用后面的类(...)。 你不能拥有后期课程的对象。

要解决这个问题,您需要在类之前声明结构,并将其用作字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM