0

我有两个嵌套的类,如下所示:

class A{
    private:
        class B{

        };
    B *object;
}

现在我想要一个可以返回这个对象的函数,比如:

B& A::get_object(){
    if(object == nullptr)
        object = new B();
    return *object;
}

但它说 B 没有在 get_object() 中命名类型。我做错了什么,我该如何修复它?

我这样做的主要目的是我想隐藏 B 类,因为除了调用 A::get_object() 之外,不允许以任何其他方式创建 B 的对象。也许我应该换一种方式?

提前致谢!

4

1 回答 1

1

尝试方法的返回类型为A::B&.

您可以在不完全限定类声明中的返回类型的情况下逃脱,但不能在实现中 - 这可能会产生误导。

此外,当您返回一个引用时,您需要注意它B* object永远不会为空 - 通常通过在构造函数中将其实例化并仅在析构函数中将其删除,否则该方法可能会返回对 null 的引用。

如果一个对象必须像它的父对象一样存在,为什么不把它放在堆栈上——要么让方法返回一个B*.

于 2013-11-07T16:30:47.347 回答