- 論壇徽章:
- 24
|
回復(fù) #81 Pervise 的帖子
原帖由 Pervise 于 2007-9-17 16:45 發(fā)表 ![]()
那你用C++實(shí)現(xiàn)O12一個(gè)。
這是由于多重繼承帶來(lái)的繼承的模糊性帶來(lái)的問題,C++ 通過(guò)虛擬繼承技術(shù)來(lái)實(shí)現(xiàn)。
#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;
}
|
|
|