2011-12-26 31 views
2

在多重繼承C++與相同的屬性這樣的代碼相同的屬性在蘇伯類多重繼承與超類

class A{ 
protected : 
    int var; 
} 

class B{ 
protected : 
    int var;  
} 

class C: public A,B{ 

    C(){ 
     A::var=3; 
     B::var=5; 
    } 
} 

我必須寫A :: VAR或B ::變種來確定超類 是有什麼辦法來重新定義在C級的屬性一樣

#define AA = A::var 
+4

問題在哪裏? – SlavaNov 2011-12-26 20:12:44

回答

2

當然,你可能#define一切。但這不是一個好的高度。 AA也會在您的代碼中被定義,而不僅限於class C的範圍內。

您可以添加:

using A::var; 

這樣varA::var默認。

除此之外,如果您不想在任何地方添加A::,還可以添加一個成員函數,以返回您對成員變量的引用。