我有一个派生自数据容器类的类。构造函数无法初始化容器的所有内容,因此需要调用另一个类成员函数(提供一些额外的数据)来完成初始化。该成员函数将布尔值设置为true,表明数据已准备好进行访问。
如果数据是该类的成员,我将其设置为private / protected,并且我有一个访问器,例如:
mycontainer& get_data() { check_macro(ready, "Data not ready"); return data; }
如果该类继承自mycontainer
,该怎么做?我可以私下从mycontainer
推导出来,然后期望返回对this
的引用是公开的吗?
答案 0 :(得分:1)
请记住,当您从另一个类继承时,您的新类具有基类具有的所有成员。您只需直接作为班级成员访问它们。
在下面的示例中,派生类没有成员,但由于它继承自“DataContainerClass”,因此它具有该类的所有成员,因此它具有“Ints”成员。
因此,无论您的数据容器基类具有什么成员,您只需访问它们就像在类中定义一样。当然,成员必须是可访问的。 (例如,在基类中公开)
class DataContainerClass
{
public std::vector<int> Ints;
}
class MyClass : public DataContainerClass
{
}
int main()
{
MyClass cls;
// Ints is visible as a member of 'MyClass', because
// MyClass inherits from DataContainerClass.
cls.Ints.push_back(1);
cls.Ints.push_back(2);
}