在另一个类中构造一个类(非静态成员引用必须相对于特定对象)

时间:2014-07-16 09:35:36

标签: c++ class static nested

我有一个 A 类,它有一个指向类 B 的指针向量作为其成员变量。 B 类只会在 A 中使用,所以我决定在 A 中定义它。 B 的构造函数使用在 A 的构造函数中计算的变量,让我们调用 c

问题是,当我写 A.cpp 时:

A::B::B(...)
{
foo(c);
}

它给出了错误:非静态成员引用必须相对于特定对象

我尝试了 A :: c 而不是 c ,但这并没有解决问题。猜猜我想要的是,如果有任何意义的话,有一种B从B继承变量而不实际成为它的孩子的方法。无论如何用“ this ”的通用版本或类似的东西来完成它?

1 个答案:

答案 0 :(得分:0)

B无法知道你指的是哪个c。你可以通过在构造B时将指针传递给它来轻松地使它像这样工作。

class A {
    class B {
        B(A * owner) : 
        owner(owner) {}
        void doSomething() {
            int d = owner->c;
        }
    private:
        A * owner;
    };

    A() :
    bInstance(this) {}

    int c; 
private:
    B bInstance;
};

我不认为语言中有任何内容可以解决您的问题。