0
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)” )。

当然,我可以使用动态强制转换并检查 null ptr 等或使用 typeid,但必须有更简单的方法吗?

提前致谢。

4

1 回答 1

2

获得相同效果的一种方法是使用该clone()模式。给类 A 一个复制它的虚函数,在每个子类中覆盖该函数。通过引用将 A 的实例传递给您的函数,然后clone在该函数中传递。有点乱,但有效。

于 2012-06-22T21:54:43.227 回答