【发布时间】:2011-02-14 17:43:36
【问题描述】:
我有类似的东西:
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;
}
我基本上想通过调用类似的东西直接得到a
StructToMyEnum<A>();
这是我能想到的最好的方法,但是当我编译时尝试链接时出现multiple definition of 'MyEnum::Value StructToMyEnum<A>()' 错误。
对于根据此示例将类型映射到枚举的最佳方法有什么建议吗?
【问题讨论】:
-
您为什么要这样做的任何特殊原因?对我来说,它增加了不必要的复杂性,我无法弄清楚这个模型会完成哪些现有模型无法做到的事情,并且做得更好。
-
听起来像是缺少标题保护。
-
您需要内联模板函数的完整专业化。
标签: c++ templates enums map struct