我有一個基類和幾個派生類。派生類使用一些常用數據,我可以將這些常用數據作爲基類的受保護成員嗎?我知道受保護的成員有時會打破封裝,所以我想知道是否有任何好的方法。基類中的通用受保護數據成員?
這裏是一個具體的例子:
class Base{
public:
virtual void foo() = 0;
void printData();
protected:
std::vector<std::string> mData;
}
class Dr1 : public Base{
public:
virtual void foo(); //could change mData
}
class Dr2 : public Base{
public:
virtual void foo(); //could change mData
}
如果我把MDATA到DR 1和DR作爲私有成員,那麼我就需要把它放在他們兩人,並在基地我不能有printData()因爲printData()需要訪問mData,除非我使printData()虛擬並且在Dr1和Dr2中具有相同的功能,這對我來說沒有多大意義。
有沒有更好的方法來處理這個問題,而不使用保護成員?謝謝。
非常感謝您的回覆和有趣的故事。是的,維護也是我關心的問題。我接受了其他答案,因爲user168715指出了一種解決問題的方法。 – EXP0 2010-06-15 19:28:33