标签: c++
假设我有一个基类Base和两个派生类A,B 我如何动态创建obj,而不知道它是ClassA还是ClassB,我需要实现这样的事情:
Base
A,B
obj
ClassA
ClassB
func(Base &b) { X *obj = new X(); }
X将是A或B,取决于b的实际类型。
我能想到的唯一方法是检查dynamic_cast<A&>(b)是否成功,如果抛出错误,它必须是ClassB。
dynamic_cast<A&>(b)
还有比这更好的方法吗?因为我可能有更多派生类.ClassA,B,C,D ......