我有两个嵌套的类,如下所示:
class A{
private:
class B{
};
B *object;
}
现在我想拥有一个可以返回此对象的函数,例如:
B& A::get_object(){
if(object == nullptr)
object = new B();
return *object;
}
但是它说B没有在get_object()中命名一个类型。我做错了什么,我该怎么修呢?
我正在做的主要目的是我想隐藏B类,不允许以任何其他方式创建B的对象,而不是调用A :: get_object()。也许我应该以另一种方式做到这一点?
提前致谢!
答案 0 :(得分:1)
尝试将方法的返回类型设为A::B&
。
你可以在没有完全确定类声明中的返回类型的情况下离开,但实现中不 - 这会让人感到误导。
此外,当您返回引用时,您需要注意B* object
永远不会为空 - 通常是通过在构造函数中实例化并仅在destuctor中删除它,否则该方法可能会返回对null的引用。
如果一个对象只要它的父对象必须存活,那么为什么不把它放在堆栈上 - 或者让方法返回B*
。