我尽力描述标题中的目标,但这里是代码:
struct Bar {
Foo one;
Foo two;
}
class Foo {
Bar function();
}
我知道这不起作用,但我怎么能完成这个想法呢?我想让结构全局化的原因是因为它也在main.cpp中使用.我已经尝试在类中声明结构,然后将类外部的结构定义为Foo :: Bar {},但这也不起作用.
我想要这样做的原因是因为我有需要返回多个变量的函数,例如一个返回商和余数的除法函数.但问题是,返回了自定义类(BigInteger)的多个实例.
解决方法:
由于Bar包含Foo的实例,后者在前者的声明中不能是不完整的.因此,在声明Bar之前,您需要声明Foo.但是,由于Foo包含一个返回Bar对象的函数,因此在声明Foo之前,您必须转发声明Bar.
struct Bar;
class Foo {
Bar function();
};
struct Bar {
Foo one;
Foo two;
};
Bar Foo::function()
{
return Bar();
}
请注意,Foo :: function的实际定义只能在Bar声明之后出现,因为该函数需要实例化Bar对象.