从c ++中的继承类条件访问基类

时间:2017-08-03 14:27:10

标签: c++ inheritance

我有一个派生自数据容器类的类。构造函数无法初始化容器的所有内容,因此需要调用另一个类成员函数(提供一些额外的数据)来完成初始化。该成员函数将布尔值设置为true,表明数据已准备好进行访问。

如果数据是该类的成员,我将其设置为private / protected,并且我有一个访问器,例如:

mycontainer& get_data() { check_macro(ready, "Data not ready"); return data; }

如果该类继承自mycontainer,该怎么做?我可以私下从mycontainer推导出来,然后期望返回对this的引用是公开的吗?

1 个答案:

答案 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);

}