我有一个 A 类,它有一个指向类 B 的指针向量作为其成员变量。 B 类只会在 A 中使用,所以我决定在 A 中定义它。 B 的构造函数使用在 A 的构造函数中计算的变量,让我们调用 c 。
问题是,当我写 A.cpp 时:
A::B::B(...)
{
foo(c);
}
它给出了错误:非静态成员引用必须相对于特定对象
我尝试了 A :: c 而不是 c ,但这并没有解决问题。猜猜我想要的是,如果有任何意义的话,有一种B从B继承变量而不实际成为它的孩子的方法。无论如何用“ this ”的通用版本或类似的东西来完成它?
答案 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;
};
我不认为语言中有任何内容可以解决您的问题。