在c++中使用包装的整数作为索引

Using a wrapped integer as index in C++?

本文关键字:整数 索引 包装 c++      更新时间:2023-10-16

假设我有一个(平凡的)类,在c++中包装普通int类型的随机整数,我如何在索引数组或从字符串中选择字符时使用该类的实例,如整数?

如果是操作符重载的问题,那么是哪个操作符?

作为一个具体的例子,我有一个Random类,我在字符串的随机位置选择字符,像这样:

string chars = "whatever";
Random R = Random(0, chars.length());
other_chars += chars.at(R.getValue());

但是,我宁愿用other_chars += chars.at(R);,但是怎么用呢?

您需要一个用户定义的转换操作符。

class Random
{
  int x_;
  public:
    operator int() const { return x_; }
};

您是否尝试在包装器Random中重载operator int() ?我认为应该是这样的,

class Random
{
  int value;
public:
  // ... constructors and operator =
  operator int () const { return value; }
};

您需要类型转换操作符重载:operator int() { return _value; }