在c++中如何在没有继承的情况下在程序中动态初始化对象? 例如我有 A 类和 B 类。根据条件我需要创建对象的实例,但我不知道我需要创建什么对象,这取决于用户输入的信息;
示例代码:
int i;
cin>>i>>endl;
void *obj;
if(i)
obj = new A();
else
obj = new B();
最佳答案
您可以使用 std::any或 std::variant取决于您的需求。
将指针强制转换为 void*
是(大多数时候)一个坏主意,因为您丢失了对象的类型并且必须处理原始指针。这意味着您必须管理资源,调用正确的析构函数...any
和 variant
会为您完成这些工作。
我建议使用 variant
而不是 any
,除非您有特定需要 any
因为 variant
让您更好地控制类型:您的值只能包含有限的类型列表。
关于c++ - 如何在程序中动态初始化一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693598/