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