-3

我有一个与 c++ 中的 static_cast 相关的问题。

我有 :

  • 类 B 及其派生类 D
  • 类 BData 及其派生类 DData

这是代码:

class B 
{
  public:
    B(BData * pb)
    {
    }
};

class D : public B 
{
  public:
    D(DData * pd) : B( static_cast<BData*>(pd))
    {
    }
};

编译总是报错:

error C2440: 'static_cast' : cannot convert from 'DData *' to 'BData *',
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

有人知道为什么吗?

4

1 回答 1

2

我不能static_cast在构造函数中使用?

您可以static_cast在构造函数中使用。

错误消息准确地告诉您为什么会出现错误,
您正在尝试强制转换不相关的类(DDataBData)。你不能用static_cast.

附带说明,您的代码示例和错误消息不匹配,请发布您的真实代码。
如果您的真实代码与您描述的一样,那么它应该可以正常工作

于 2012-09-28T11:17:21.563 回答