注册 登录
编程论坛 VC++/MFC

新手请教一个多重公用继承的访问问题

LBY_CHINA 发布于 2013-07-09 16:01, 417 次点击
新手求解一个多重继承的访问问题
#include"iostream.h"
class base{
public:
    int lby;
};

class base1:public base{};
class base2:public base{};
class b12:public base1,public base2{};
class b22:public base1,public base2{};
class kk:public b12,public b22{};
//*******************************************************
main()
{
kk bbb;
}
我想通过对象bbb修改bbb.b22.base2.base.lby=1999;怎样写表达式?
     我想说的意思的是对于多重公有继承,怎样访问任意深度的基类,当然没有同名的很好访问,但对于上面问题同名情况如何表达,我本意不想用虑基类只产生一个拷贝。就想写出形如:bbb.b22.base2.base.lby=1999或bbb.b12.base2.base.lby=2000这样的访问形式,如不能解决则公有继承的公有成员怎样实现任意访问?

对了,对于二重深度的访问,形如。A.BB1::F(),A.BB2::F()这样的表达式是没有问题的。但是再写下去三重深度
A.BB1::CCC1::F()这样类型的表达式的形式就不行了。


1 回复
#2
yuccn2013-07-09 20:11

class base
{
public:
    int lby;
};

class base1:public base
{
};

class base2:public base
{  

};

class echo:public base1,public base2{};


int _tmain(int argc, _TCHAR* argv[])
{
    echo a;
    a.base1::lby = 1;  
    a.base2::lby = 2;


    printf("a.base1::lby = %d,\r\na.base2::lby = %d.", a.base1::lby, a.base2::lby);

    return 0;
}


[ 本帖最后由 yuccn 于 2013-7-9 20:12 编辑 ]
1