gpt4 book ai didi

c++ - 如何在程序中动态初始化一个对象?

转载 作者:行者123 更新时间:2023-11-30 03:30:51 26 4
gpt4 key购买 nike

在c++中如何在没有继承的情况下在程序中动态初始化对象?例如我有 A 类和 B 类。根据条件我需要创建对象的实例,但我不知道我需要创建什么对象,这取决于用户输入的信息;

示例代码:

int i;
cin>>i>>endl;
void *obj;
if(i)
obj = new A();
else
obj = new B();

最佳答案

您可以使用 std::anystd::variant取决于您的需求。

将指针强制转换为 void* 是(大多数时候)一个坏主意,因为您丢失了对象的类型并且必须处理原始指针。这意味着您必须管理资源,调用正确的析构函数...anyvariant 会为您完成这些工作。

我建议使用 variant 而不是 any,除非您有特定需要 any 因为 variant让您更好地控制类型:您的值只能包含有限的类型列表。

关于c++ - 如何在程序中动态初始化一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com