class A {...}
class B : public A {...}
class C : public A {...}
void M(A* a) {
A* aa = new B(* a)
...
}
int main()
{
B b = new B();
M(b);
...
}
所以我想做的是调用传递给 M 的对象(“a”)的复制构造函数,而不必知道它是类型 B 还是 C 等(而不是“new B(a) “如上)。
当然,我可以使用动态转换并检查空指针等或使用 typeid,但一定有更简单的方法吗?
提前致谢。
最佳答案
获得相同效果的一种方法是使用 clone()
模式。给类 A 一个复制它的虚函数,在每个子类中覆盖该函数。通过引用将 A 的实例传递给您的函数,然后在该函数中克隆
它。有点乱,但有效。
关于c++ - 在将实例作为基础对象传递的函数中使用复制构造函数创建实例的拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164565/