【问题标题】:Implicit conversion to array index type隐式转换为数组索引类型
【发布时间】:2020-12-20 21:31:40
【问题描述】:

假设我有以下类型:

struct XY
{
  short nIndex;
  
  constexpr operator int()
  {
     return nIndex;
  }
};

我可以改变什么来完成以下工作:

char arr[10][255];

constexpr XY xy{1};

char *x = arr[xy];

我认为只给 XY 一个转换为整数的运算符就足够了,但我得到了错误:

'operator[]' 不匹配(操作数类型为 'const char [10][255]' 和'const XY')

【问题讨论】:

标签: c++ operator-overloading implicit-conversion


【解决方案1】:

由于变量是constexpr,所以不能调用非 const 限定的转换运算符。解决方法很简单:使转换运算符 const 合格:

constexpr operator int() const

【讨论】:

  • 没想到问题这么简单就解决了。有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多