gpt4 book ai didi

c++ - 是否可以创建具有稍后类型定义的模板类?

转载 作者:行者123 更新时间:2023-11-28 00:24:27 26 4
gpt4 key购买 nike

假设这个伪代码:

Generic<unknown_type>* p;

if (type == A)
p = new Generic<AClass>;
else if (type == B)
p = new Generic<BClass>;
else
p = new Generic<CClass>;

是否可以在没有类型的情况下创建指向模板类的指针?

最佳答案

可以声明一个模板类,使用指向它的指针,然后提供定义。但这实际上并不是您的代码试图做的。

您正在尝试声明和使用类型不完整的变量。那是不允许的。但是,您可以参数化整段代码,因此它也成为一个模板。然后它读起来更像:

Generic<TypeParam>* p = new Generic<TypeParam>;

并且根据 TypeParam,可以扩展(仅在编译时)到您显示的三种情况中的任何一种。

要在运行时进行类型选择,您需要一个公共(public)基类。模板特化不会以任何方式通过继承自动关联。

关于c++ - 是否可以创建具有稍后类型定义的模板类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791626/

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