我有一個從派生類Base派生的類Derived。在Derived的函數中,我可以訪問Base的受保護成員。例如,我可以做到這一點。當從派生類訪問基類成員時,強制使用範圍解析運算符
class Base
{
protected:
int i;
}
class Derived : class Base
{
void process()
{
i = 5;
}
}
我的問題是,是否有可能在從派生類訪問基類成員時強制使用範圍解析運算符?原因是我想在代碼中清楚哪些變量來自基類。執法是這樣,我不會意外跳過範圍解決運算符(我粗心)。我更喜歡不使用訪問器,因爲基類中的許多成員在Derived類中是必需的,這使得代碼很繁瑣。我正在使用MSVC 2010。
class Base
{
protected:
int i;
}
class Derived : class Base
{
void process()
{
Base::i = 5; //enforce so that i=5 won't compile
}
}
爲什麼......你要做到這一點?如果您對保護成員不滿意,請勿使用它們。 – 2010-10-08 08:00:35
我建議閱讀Herb Sutter的GotW關於封裝的文章。總結一下:[「編寫公共或受保護的數據成員從未有充分的理由」](http://www.gotw.ca/gotw/070.htm) – 2010-10-08 08:02:44
這比調用保護程序更好的「文檔」成員「base_i」等...? (醜陋,但這是你做的麻煩; -P)。 – 2010-10-08 08:53:47