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

如何在程序中动态初始化对象? 如何在C++中不继承继承,动态初始化对象? 例如,我有A类和B类。根据我需要创建对象实例的条件,但我不知道我需要创建什么对象,这取决于用户输入的信息,c++,object,dynamic,C++,Object,Dynamic,示例代码: int i; cin>>i>>endl; void *obj; if(i) obj = new A(); else obj = new B(); 如果您没有获取指针的限制,那么获取两个类的两个指针,并根据输入初始化一个 int i; A *a_ptr; B *b_ptr; cin>>i>>endl; if(i) a_ptr = new A(); else b_ptr = new B(); 您可以使用或

示例代码:

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

如果您没有获取指针的限制,那么获取两个类的两个指针,并根据输入初始化一个

int i;
A *a_ptr;
B *b_ptr;
cin>>i>>endl;
if(i)
    a_ptr = new A();
else
    b_ptr = new B();
您可以使用或根据您的需要

将指针投射到
void*
是一个坏主意(大多数时候),因为你失去了对象的类型,你必须处理原始指针。这意味着你必须管理资源,调用正确的析构函数<代码>任何和
变体
为您执行此操作


我建议使用
variant
而不要使用
any
,除非您对
any
有特殊需求,因为
variant
可以让您对类型有更多的控制:您的值只能有有限的类型列表。

可能重复为什么要避免继承?如果您需要能够在一个变量中存储两个类中的任何一个,那么类必须有一些共同点。如果他们有共同点,那么继承是自然的解决方案。这只是一种方法吗?但如果我有矩阵类和向量类?您认为首先创建抽象类是个好选择吗?代码中有两条路径。一个用于向量,一个用于矩阵。你想要有一个变量,它能够容纳这两个变量中的任何一个,所以我假设这两个代码路径在后面会连接起来,也就是说,有一些
do\u something\u,带有矩阵或向量(obj)函数调用。这意味着向量和矩阵都共享一些属性,这反过来意味着是的,抽象类(想想java/c#中的接口)将非常适合。如果您不喜欢动态多态性,那么带模板的静态多态性可能更适合您。我知道,但我可以只创建一个指针并初始化我需要的对象吗?