如果有这个代码,为了简化我的问题:
class Parent
{
public:
Parent();
~Parent();
virtual void Func() = 0;
};
class Child1 : public Parent{
public:
Child1();
void Func() override;
...
};
class Child2 : public Parent{
public:
Child2();
void Func() override;
...
};
//Some other file
std::vector<Parent*> vec;
vec.push_back(new Child1());
vec.push_back(new Child2());
std::vector<Parent*> vec2;
vec2.push_back(new Parent(*vec[0]));//Gives me an error: object of abstract class type "Parent" is not allowed
我想做的是创建该 vec
的副本,而不是指向相同的内存位置。