隐式转换为数组索引类型
Implicit conversion to array index type
假设我有以下类型:
struct XY
{
short nIndex;
constexpr operator int()
{
return nIndex;
}
};
我可以更改什么来完成以下工作:
char arr[10][255];
constexpr XY xy{1};
char *x = arr[xy];
我认为只给 XY
一个转换为整数的运算符就足够了,但我收到错误:
no match for 'operator[]' (operand types are 'const char [10][255]'
and 'const XY')
由于变量是constexpr
,所以不能调用非const限定的转换运算符。解决方案很简单:使转换运算符 const 合格:
constexpr operator int() const
假设我有以下类型:
struct XY
{
short nIndex;
constexpr operator int()
{
return nIndex;
}
};
我可以更改什么来完成以下工作:
char arr[10][255];
constexpr XY xy{1};
char *x = arr[xy];
我认为只给 XY
一个转换为整数的运算符就足够了,但我收到错误:
no match for 'operator[]' (operand types are 'const char [10][255]' and 'const XY')
由于变量是constexpr
,所以不能调用非const限定的转换运算符。解决方案很简单:使转换运算符 const 合格:
constexpr operator int() const