派生类不能在赋值中转换为基类

时间:2015-04-23 08:40:17

标签: c++

我已经定义了两个这样的类:

class A{};
class B : public A{};

我还定义了一个函数来返回指向B的指针:

B* func();

为什么我不能这样做?

A* a = NULL;
a = func();

我以为我在使用动态绑定,但显然我错了。

-----------------更新---------------------------- < / p>

抱歉,我错了,我正在处理一个大项目,以便错误消息不能正常工作。

问题是由头文件引起的,因为A和B分别在不同的头文件中定义。

1 个答案:

答案 0 :(得分:1)

此示例程序成功编译

#include <iostream>

class A { public: virtual ~A() = default; };
class B : public A {};

B* func() { return new B(); }

int main() 
{
    A *a = func();

    delete a;

    return 0;
}