相关疑难解决方法(0)

枚举值(int)到类型的动态映射

看来这个问题在我们的工作中非常普遍.

我们通过网络发送int或enum值,然后我们收到它我们想要创建/调用特定的对象/函数.

最简单的解决方案是使用switch语句,如下所示:

switch (value) {
    case FANCY_TYPE_VALUE: return new FancyType();
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我们会有很多这些开关块,当我们创建新的值和类型时,我们需要更改所有这些.看起来确实如此.

其他可能性是使用模板.但我们不能,因为枚举的值是在运行时定义的.

是否有任何正确的设计模式,或任何正确的方法?

这似乎是每天编码中非常普遍和常见的问题......

c++ mapping enums

4
推荐指数
1
解决办法
6656
查看次数

用于将struct类型映射到枚举的C++模板?

我有类似的东西:

struct A { ... };
struct B { ... };
struct C { ... };

class MyEnum {
public:
    enum Value { a, b, c; }
}

template<typename T> MyEnum::Value StructToMyEnum();

template<>
MyEnum::Value StructToMyEnum<A>()
{
   return MyEnum::a;
}

template<>
MyEnum::Value StructToMyEnum<B>()
{
   return MyEnum::b;
}
Run Code Online (Sandbox Code Playgroud)

我基本上想a通过调用soemthing直接获得

StructToMyEnum<A>();
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最好的,但是当我编译时,我multiple definition of 'MyEnum::Value StructToMyEnum<A>()'在尝试链接时遇到错误.

有关根据此示例将类型映射到枚举的最佳方法的任何建议吗?

c++ enums templates struct map

2
推荐指数
2
解决办法
4662
查看次数

标签 统计

c++ ×2

enums ×2

map ×1

mapping ×1

struct ×1

templates ×1