考慮派生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