gpt4 book ai didi

c++ - 在编译时将类型转换为整数?

转载 作者:行者123 更新时间:2023-11-30 04:22:10 24 4
gpt4 key购买 nike

在 C++ 中有没有办法在编译时将类型转换为整数(可能使用 typeid)?我的目标是为该类中的每种类型传递唯一代码:

template<int TypeCode>
class MyClass
{
};

编辑:关于我正在尝试做的事情的更多细节。事实上,MyClass 更像这样:

template<int Code>
class AbstractBase
{
};

我使用大量 CRTP 技术编写了高度模板化的代码,我需要检查某些操作类型之间的兼容性。为此,我的想法是从 AbstractBase 类继承兼容类型,为所有这些类型指定相同的代码。使用它,只需调用 std::enable_if<std::is_base_of<AbstractBase<MyCode>, T>::value>::type我将能够检查某些操作的类型兼容性。

在第一次订购时,我可以手动生成代码,但如果我可以自动从类型生成这段代码,那会更优雅。

最佳答案

方法有很多种。这是模板特化:

#include<iostream>
using namespace std;

template<class T> struct type_code { enum{value=0}; }; // unknown type code
template<> struct type_code <int> { enum{value=1}; };
template<> struct type_code <float>{ enum{value=2}; };

int main() {
cout << type_code<void>::value << endl;
cout << type_code<int>::value << endl;
cout << type_code<float>::value << endl;
}

输出:

0
1
2

关于c++ - 在编译时将类型转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959860/

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