gpt4 book ai didi

c++ - 乘法如何用于 C++ 枚举?

转载 作者:太空狗 更新时间:2023-10-29 23:38:23 26 4
gpt4 key购买 nike

我们有一个用于数字数据类型的模板转换函数。它内部包含一个构造,使其无法使用指针等类型进行编译。

template<class To, class From>
To ConvertTo( From what )
{
assert( 2 * what == what * 2 ); // this will not compile for pointers
//skipped
}

当枚举作为第二个模板参数传递时,此函数可以正常编译和工作:

enum TSomeEnum {
SE_First,
SE_Second
};

TSomeEnum enumValue = SE_First;
int result = ConvertTo<int>( enumValue );

以上代码在 VC++7 上按预期编译和运行。

* 操作如何用于枚举?这是一种未定义行为的方式吗?

最佳答案

枚举降级为整数(旧的 C 功能),这就是为什么它可以工作。我不认为这是未定义的行为,尽管它可能是您不希望/不期望的那种行为。

关于c++ - 乘法如何用于 C++ 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193586/

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