为什么我不能成为Grand类型的类(class)成员?

class Grand
{};

class Father :private Grand
{};

class Son :public Father
{
    Grand g; //This gives error. Class Grand is Inaccessible.
};

最佳答案

可以解决此问题:

class Grand
{};

class Father :private Grand
{};

typedef Grand MyGrand;

class Son :public Father
{
    MyGrand g; // This now compiles successfully
};

问题在于,像private这样的说明符会影响名称中的可访问性,但不会影响可见性。因此,当您说Grand g时,编译器会首先走到继承树上,以防万一您最终解决了Grand::MyType之类的问题。

关于c++ - 二级后代中无法访问的基地,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28715937/

10-11 19:40