class A
{
protected:
int x;
A *link;
};
class B : private A
{
protected:
A *p1;
A *p2;
};
class C : private B
{
public:
int func();
private:
B y;
};
int C::func()
{
int n;
n=y.p1->link->x = 2;
return(n);
}
我的想法是想在C类中通过func函数访问到所有这3个类的成员函数,
请问为什么不可以呀?
有别的办法吗,比如友元什么的
将类的继承改为public试一下
继承改为公共的是不是也没用
不知道你错在什么地方
初始化指针空间,未分配空间对象地址和未初始化的指针会引起错误。
是不是该给每个类写构造函数为指针分配地址空间。。
class A
{
protected:
int x;
A *link;
friends: int fun();
};
class B : private A
{
protected:
A *p1;
A *p2;
friends: int fun();
};
class C : private B
{
public:
// int func();
friends: int fun();
private:
B y;
};
int func()
{
int n;
n=y.p1->link->x = 2;
return(n);
}
这样可以吗?
如果你采用继承的话,C类中本来就包括x,link,p1,p2等数据,以及一个y等数据。你的本意是这样的吗?如果只想在C中包含一个成员y,就不要使用类继承,只需要在A及B中将C声明为友元即可。如:
class A
{
friend class C;
protected:
int x;
A *link;
};
你在调用到 n=y.p1->link->x = 2;时,注意一下link初始化过了没有。