當你有一個派生類,是有指從比其他的方法給一個變量的簡單的方法:有沒有簡單的方法來使用基類的變量?
BaseClass::variable
編輯
由於恰巧,我發現,解釋了這個問題一個頁面使用功能代替: Template-Derived-Classes Errors。顯然,使用模板類時會有所不同。
當你有一個派生類,是有指從比其他的方法給一個變量的簡單的方法:有沒有簡單的方法來使用基類的變量?
BaseClass::variable
編輯
由於恰巧,我發現,解釋了這個問題一個頁面使用功能代替: Template-Derived-Classes Errors。顯然,使用模板類時會有所不同。
如果基類成員變量是受保護的或公共的,則只能在派生類的任何成員函數中通過名稱引用它。如果它對於基類是私有的,編譯器將不會讓派生類訪問它。例如:
class Base
{
protected:
int a;
private:
int b;
};
class Derived : public Base
{
void foo()
{
a = 5; // works
b = 10; // error!
}
};
還有一點可以說是保持所有成員變量都是私有的,並根據需要提供getter和setter。
此外,提防「隱藏」數據成員:
class Base
{
public:
int a;
};
class Derived : public Base
{
public:
int a;
};
這將創建一個名爲a
兩個變量:一個在Base
,在Derived
之一,它可能會導致混亂和錯誤。
只是爲了澄清,訪問基類的私有成員將導致編譯器錯誤。編譯器不會忽略它並尋找另一個匹配。 – KeithB 2008-10-27 19:18:20
你可以把你的問題更具體,這樣你說明,它涉及到模板派生類的事實呢?謝謝。 – 2008-10-27 20:25:45