gpt4 book ai didi

c++ - 通过模板进行类型映射

转载 作者:可可西里 更新时间:2023-11-01 17:29:48 25 4
gpt4 key购买 nike

我正在寻找一种映射类型的方法,f.i.有一个类双:

class Double 
{
public:
typedef double basic_type;
...
};

我希望能够有一个类型转换,这样

typeid(TypeToObjectType<double>::type) == typeid(Double)

有什么想法可以实现这一点(通过部分特化等)?

最佳答案

你可以通过特化来实现:

template<class T>
struct TypeToObjectType;

template<>
struct TypeToObjectType<double> {
typedef Double type;
};

请注意,您必须为希望 TypeToObjectType 工作的每个类型提供特化。宏在这里很有用:

#define SPECIALIZE_TYPETOOBJECTTYPE(ObjectType) \
template<> struct TypeToObjectType<ObjectType::basic_type> { \
typedef ObjectType type; \
};

SPECIALIZE_TYPETOOBJECTTYPE(Int)
SPECIALIZE_TYPETOOBJECTTYPE(Double)

关于c++ - 通过模板进行类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512757/

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