考虑派生A类和BaseB类的Base类。从BaseB导出C类。所有类都继承非静态变量“y”,但在BaseB和C类中,“y”具有相同的值。 我解决了这个情况用下面的代码:将静态变量分配给非静态变量
class Base {
protected:
int y;
virtual void registerValue()
{
y = 5;
}
};
class A : public Base {
};
class BaseB : public Base {
protected:
static int x;
virtual void registerValue()
{
// Process x ...
y = x;
}
};
class C : public BaseB {
};
int BaseB::x = 3;
int main() {}
它的工作原理,但它是正确的静态变量分配给非静态变量这种情况?
我不明白为什么它不会。它是对静态变量*的分配,您必须注意(并发问题等) – Medinoc
“所有类都继承非静态变量”y“,但在BaseB和C类中,”y“具有相同的价值“ - 好吧,它们都具有相同的Y值;除了有时您将其设置为不同的值。即。如果你打电话给'B或C :: registerValue',你最终会改变A的值,这可能不是你想要的。 – UKMonkey
UKMonkey考虑到A类用自己的成员y生成其他实例。 – Ruben