为什么我不能成为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/