首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++从模板动态创建某个类型

C++从模板动态创建某个类型
EN

Stack Overflow用户
提问于 2017-10-19 09:50:24
回答 1查看 26关注 0票数 0

我有一个模板

代码语言:javascript
运行
复制
enum MyEnum = {MyEnum _1, MyEnum _2, ...};
template<MyEnum T>
struct MyStruct {
    ...
}

现在,我想基于一个条件创建一个特定类型的模板。但是,MyEnum中的元素数量是开放的,所以我不能通过某种开关来实现。

所以我正在寻找一种方法来做一些事情,比如

代码语言:javascript
运行
复制
void doStuff() {
    MyEnum e = getType();
    MyStruct<e> s;
}

但是编译器抱怨e不是一个常量表达式。这是有道理的,因为我有运行时信息。有没有一种方法可以优雅地构建一些模仿的东西

代码语言:javascript
运行
复制
doStuff() {
    MyEnum e = getType();
    Switch(e) {
        case MyEnum_1: 
            MyStruct<MyEnum_1> s;
            ....
        case MyEnum_2: ...
    ...
}

原因是,正如前面提到的,枚举列表可能会定期扩展/更改,我不希望每次发生这种情况时都必须在其他端维护代码。

EN

回答 1

Stack Overflow用户

发布于 2017-10-19 09:54:08

也许像这样的东西应该行得通:

代码语言:javascript
运行
复制
MyStruct<decltype(e)> var;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46821724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档