我有一个基础班和几个衍生班。 衍生的类别使用一些共同数据,我能否把这些共同数据作为基类受保护成员? 我知道被保护的成员有时会放松控制,因此,我想知道是否有任何良好办法。
具体例子如下:
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带入1博士和2博士为私人成员,那么我就需要把它放在他们当中,而且由于打印数据需要进入数字数据,因此我无法在基地获得印刷数据,除非我提供打印数据,并在1博士和2博士中具有相同的功能,这对我来说并不重要。
如果不使用受保护的成员,是否有更好的办法处理这一问题? 谢谢。