给定以下模板和专业化
我希望能够遍历枚举值并为每个特定值创建对象。
我收到以下错误信息: 错误:'i' 的值在常量表达式中无法使用 CountryInfo<(static_cast(i))>();
该错误通常是由于试图在编译时使用非常量值引起的。您可以尝试将变量 'i' 转换为常量,或者使用编译时常量来代替 'i'。
enum CountryName
{
Armenia = 0 ,
Georgia,
Size = 2
};
template <CountryName variable>
class CountryInfo;
template <>
class CountryInfo<Armenia>
{
/* CODE HERE */
};
template <>
class CountryInfo<Georgia>
{
/* CODE HERE */
};
我希望能够遍历枚举值并为每个特定值创建对象。
main() {
for(auto i=0; i<CountryName::Size; ++i) {
CountryInfo<(static_cast<CountryName>(i))>();
}
}
我收到以下错误信息: 错误:'i' 的值在常量表达式中无法使用 CountryInfo<(static_cast(i))>();
该错误通常是由于试图在编译时使用非常量值引起的。您可以尝试将变量 'i' 转换为常量,或者使用编译时常量来代替 'i'。
i
在运行时改变。也就是说,您不能将变量i
用作模板参数。 - Mike van Dyke