2013-02-24 141 views
0

我有一個基類和派生類。我需要訪問派生類中基類的受保護成員。但是,Eclipse不允許我像訪問數據成員那樣訪問數據成員,而不關心它是否被繼承。我怎麼做?從派生類訪問基類的受保護數據成員

class BaseClass { 
protected: 
static int a; 
int b; 
} 


class DerivedClass: public BaseClass {  
void SomeMethod {  
a=10; // cannot resolve symbol 
b=10; // cannot resolve symbol 
BaseClass::a=10; //does not complain 
BaseClass::b=10; //does not complain  
} 
} 
+1

作爲很好的做法,我可以建議使用「這個 - > B」 – Bingo 2013-02-24 22:20:57

+0

這些是實際的編譯器錯誤還是由eclipse IDE提供的這些語法/語義錯誤高亮? – Rich 2013-02-24 22:23:23

+0

當我使用this->時,只有DerivedClass的數據成員出現在自動完成中。我看不到基類的任何數據成員 – user592748 2013-02-24 22:25:54

回答

3

我不能完全理解你的問題,但固定的語法錯誤,下面應該工作:

class BaseClass { 
protected: 
static int a; 
int b; 
}; // <-- Missing semicolon 

int BaseClass::a = 0; // Define static member 

class DerivedClass: public BaseClass {  
void SomeMethod() { // <-- Missing() 
a=10; 
b=10; 
} 
};// <-- Missing semicolon 
+0

是的,即使有正確的語法,它不起作用。你還使用Eclipse CDT嗎? – user592748 2013-02-24 22:24:58

+0

不,目前不。您的問題是關於Eclipse CDT中的自動完成? – 2013-02-24 22:31:56

+1

@ user592748:你是什麼意思「它不工作」?它是否編譯?或者你的編輯只是在抱怨? – Johnsyweb 2013-02-24 22:32:37

相關問題