我必须编写一个程序,它的一个函数将通过抽象基类返回派生类,因此当返回主类时可以访问派生类的虚拟方法。
请记住,我无法更改主程序中的任何内容,因为我不是编写它的人。
#include<iostream>
using namespace std;
class A
{
private:
public:
virtual void DoIt(void)=0;
A(void){};
~A(void){};
};
class B:
public A
{
private:
int Num;
public:
virtual void DoIt(void){Num=7;cout<<"its done";};
B(void){};
~B(void){};
};
A& returnValue(void)
{
B item;
return item;
}
void main()
{
A& item=returnValue();
item.DoIt();
}
当我尝试运行它时,最后一行打破了构建,说这DoIt
是一个纯虚函数调用。有任何想法吗?