c+中的公共结构+;班 我试图在C++类中定义一个公共结构,而不能理解如何编译它。在我的标题中,我有以下内容: class AtomUtility { public: struct BoundingBox; void doWork(struct AtomUtility::BoundingBox bounds); };
来源:c+中的公共结构+;班 我试图在C++类中定义一个公共结构,而不能理解如何编译它。在我的标题中,我有以下内容: class AtomUtility { public: struct BoundingBox; void doWork(struct AtomUtility::BoundingBox bounds); };,c++,struct,inner-classes,C++,Struct,Inner Classes,来源: #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
#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...
}
当我试图编译它时,我得到一个错误:“类“Atomultility”没有名为“BoundingBox”的标记成员。在定义了
Atomultility::BoundingBox
之后,您错过了分号,您的编译器变得混乱,并且给出了一个糟糕的诊断
您还试图将atomultility::BoundingBox*
传递给需要atomultility::BoundingBox
如果您的编译器的诊断结果不佳,则在其他编译器上尝试您的代码通常会很有用。有几种编译器可以联机使用,例如,或使用pastebin进行编译,例如引用:
只能声明指向后一个类(…)的指针或引用。不能有后一个类的对象。
为了修复这个问题,你需要在类之前声明结构,使用它作为一个字段。
至少有一个;在结构定义的末尾缺少。C++中不需要说“代码>结构”/代码>。它不是C.@ KerrekSB,他在这里使用的所有上下文中都是这样。@ JAMESKANZE,不是在声明<代码> DoOrk < /C> 1时的参数。是否有一个特殊的原因,你使用这种语法,而不是声明之前的结构,然后只是使用它作为成员?2。@ KeRek SB,我工作的地方,我们使用<代码> Stutt在C++中,表示一个类,所有的成员都是公共的,没有方法,比如C结构。抱歉,这是两个从我的终端复制的TyPOS。还有一个在定义上的输入错误。修复了这些错误后,代码就可以了,如果你的编译器拒绝了它,那么它就是一个编译器错误“,您是指数据成员吗?因为它没有用作数据成员。所以编译器稍后会定义BoundingBox,即使它是源文件中的第一件事?@JonathanWakely:我不确定命名约定,我的意思是它或它的引用/指针将是对象的一部分。:我的错,我现在看到了。但它没有在对象中使用。它在定义之后才被使用,这是正常的。