我必须编写一个程序,它的一个函数将通过抽象基类返回派生类,所以当返回到主类的类可以访问派生类虚拟方法。通过其抽象基类的指针返回派生类对象
请记住,我不能在主程序中更改任何内容,因为我不是写它的人。
#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
是一个纯虚函数调用。 有什么想法?
是否修复了'returnValue'的签名?你不应该返回一个局部变量的引用。 – 2013-05-08 19:43:05
它不是固定的。我可以决定如何重振我的价值。 – petric 2013-05-08 19:44:54
这是问题所在。动态分配'item'('B * item = new B;')。然后返回一个指针或对它的引用。这应该解决它。 – stardust 2013-05-08 19:48:08