相关疑难解决方法(0)

C2440 static_cast 无法从基类转换为派生类

我试图理解为什么使用指针从基类到派生类的转换编译得很好,但使用非指针对象进行转换会产生错误 C2440。

ThreadedMessage下面我有一个由 class 继承的基类GPSMessage

struct ThreadedMessage
{
  ThreadedMessage()
    : m_Type(0), m_ID(0)
  { }

  ThreadedMessage(uint Type, uint ID = 0) :
    m_Type(Type), m_ID(ID)
  { }

  uint m_Type;
  uint m_ID;
};    

struct GPSMessage : public ThreadedMessage
{
  GPSMessage()
    : ThreadedMessage()
  { }

  GPSMessage(double lat, double lon)
    : ThreadedMessage(1), m_lat(lat), m_lon(lon)
  { }

  double m_lat;
  double m_lon;
};
Run Code Online (Sandbox Code Playgroud)

我试图myFunction从基类转换为派生类。

void myFunction(const ThreadedMessage& msg)
{
  const GPSMessage* message = static_cast<const GPSMessage*>(&msg); // Compiles fine
  const GPSMessage message1 = …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism casting static-cast

2
推荐指数
1
解决办法
6302
查看次数

标签 统计

c++ ×1

casting ×1

polymorphism ×1

static-cast ×1