我有一个类A,它的成员变量是指向类B的指针向量。类B只在A中使用,所以我决定在A中定义它。B的构造函数使用了一个在 a 构造函数内部计算的变量,我们称其为c。
问题是,在 a.p 当我写:
A::B::B(...)
{
foo(c);
}
它给了我错误:非静态成员引用必须相对于特定对象
我尝试了A::c而不是c,但这并没有解决问题。我想要的是,有一种方法可以让B从a继承变量而不是它的子变量,如果这有意义的话。不管怎样,用广义的"this"或类似的东西来完成它?
B无法知道您指的是哪个c。您可以通过在构造b时传递一个指向this的指针来轻松地使它像这样工作。
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;
};
我不认为语言中有任何内置的东西可以解决你的问题。