返回嵌套类的对象

时间:2013-11-07 16:22:28

标签: c++ class

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

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()。也许我应该以另一种方式做到这一点?

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

你可以在没有完全确定类声明中的返回类型的情况下离开,但实现中 - 这会让人感到误导。

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

如果一个对象只要它的父对象必须存活,那么为什么不把它放在堆栈上 - 或者让方法返回B*