关于C++的一个问题,与继承有关,急!

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:42:32
假设Cshape类为基类,triangle类、reversetriangle类为Cshape类的派生类,diamond类为triangle类、reversetriangle类的派生类,如何将指向Cshape类的指针转化为指向diamond类的指针?
我的语句如下:
Cshape *a;
diamond *b;
a=static_cast <diamond*>(b);
出错信息如下:
error C2594: '=' : ambiguous conversions from 'class diamond *' to 'class Cshape *'
语句写错了,Cshape *b;
diamond *a;
a=static_cast <diamond*>(b);

你写的问题就自相矛盾。。。

指向Cshape类的指针转化为指向diamond类的指针:
b = static_cast<diamond*>(static_cast<triangle*>(a));

指向diamond类的指针转化为指向Cshape 类的指针:
a=static_cast<diamond::triangle*>(b);

将指向Cshape类的指针转化为指向diamond类的指针
Cshape *a;
diamond *b;
a=static_cast <Cshape*>(b);

Cshape类的指针转化为指向diamond类的指针
这样是不好,会出问题,向上转换还可以。你可以用虚方法来解决啊。