【发布时间】:2011-08-15 22:05:51
【问题描述】:
我需要从 A* 到 C* 的隐式转换; 我不能改变 A 的定义或实现。
class A
{
};
struct B: public A
{
};
struct C: public B
{
};
当我写下以下内容时:
A* p;
C* q = p;
我收到错误 C2440;无法从 A* 转换为 C*。 鉴于我无法更改 A 的事实,我能做些什么。这两个类都是原始数据的普通结构。
【问题讨论】:
-
如果您可以更改 C,您可以创建一个采用 A* 的转换构造函数。如果您绝对肯定 A 实际上是 C,则可以使用 dynamic_cast
或 static_cast 如果 A 不是 C,请重新考虑您在做什么。
标签: c++ casting operator-overloading type-conversion