我已经定义了两个这样的类:
class A{};
class B : public A{};
我还定义了一个函数来返回指向B的指针:
B* func();
为什么我不能这样做?
A* a = NULL;
a = func();
我以为我在使用动态绑定,但显然我错了。
-----------------更新---------------------------- < / p>
抱歉,我错了,我正在处理一个大项目,以便错误消息不能正常工作。
问题是由头文件引起的,因为A和B分别在不同的头文件中定义。
答案 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;
}