我有一个带有构造函数 Foo(Bar * b) 的类 Foo。我想要类 Bar 中的一个函数,它返回一个指向该 Bar 的 Foo。我尝试:
Foo& Bar::make_foo() {
Foo f((Bar*)this);
return f;
}
但后来 G++ 告诉我:
error: variable ‘Foo f’ has initializer but incomplete type
现在我知道这在堆内存中可以正常工作:
Foo* Bar::make_foo() {
Foo * f = new Foo((Bar*)this);
return f;
}
编辑:显然问题是由于类定义不完整。但是,我仍然很好奇是否有适当的习语可以在堆栈内存中返回对象。