以下代码在第 1 行给出编译错误:“无法从 'Cloneable*' 转换为 'AClass*'”。据我所知,它涉及编译时和运行时多态性的概念。但我没有对此的具体推理。请帮助。
struct Cloneable
{
virtual Cloneable* clone()
{
cout << "Cloneable";
return new Cloneable;
}
virtual ~Cloneable() {}
};
struct AClass : public Cloneable
{
virtual AClass* clone()
{
cout << "AClass";
return new AClass;
}
};
int main()
{
Cloneable* s1 = new AClass;
AClass* s2 = s1->clone(); //Line 1
return 0;
}