- 论坛徽章:
- 24
|
回复 #81 Pervise 的帖子
原帖由 Pervise 于 2007-9-17 16:45 发表 ![]()
那你用C++实现O12一个。
这是由于多重继承带来的继承的模糊性带来的问题,C++ 通过虚拟继承技术来实现。
#include <iostream>
class O1
{
public:
int a1;
};
class O2 :virtual public O1
{
public:
int a2;
};
class O3 :virtual public O1
{
public:
int a3;
};
class O4 :virtual public O1
{
public:
int a4;
};
class O5 :virtual public O2
{
public:
int a5;
};
class O6 :virtual public O2, virtual public O3
{
public:
int a6;
};
class O7 :virtual public O3, virtual public O4
{
public:
int a7;
};
class O8 :virtual public O4
{
public:
int a8;
};
class O9 :virtual public O5, virtual public O6
{
public:
int a9;
};
class O10 :virtual public O6, virtual public O7
{
public:
int a10;
};
class O11 :virtual public O7, virtual public O8
{
public:
int a11;
};
class O12 :virtual public O9, virtual public O10, virtual public O11
{
public:
int a12;
};
int main(int argc, char *argv[])
{
O12 *p_12;
p_12 = new O12;
p_12->a1 = 1;
p_12->a2 = 2;
p_12->a3 = 3;
p_12->a4 = 4;
p_12->a5 = 5;
p_12->a6 = 6;
p_12->a7 = 7;
p_12->a8 = 8;
p_12->a9 = 9;
p_12->a10 = 10;
p_12->a11 = 11;
p_12->a12 = 12;
std::cout << "p_12->a1 = " << p_12->a1 << std::endl;
std::cout << "p_12->a7 = " << p_12->a7 << std::endl;
std::cout << "p_12->a9 = " << p_12->a9 << std::endl;
std::cout << "p_12->a12 = " << p_12->a12 << std::endl;
delete p_12;
return 0;
}
|
|
|