Используя обернутое целое число в качестве индекса в C ++? - PullRequest
0 голосов
/ 23 октября 2011

Предполагая, что у меня есть (тривиальный) класс, который оборачивает обычный тип int в C ++ для случайных целых чисел, как я могу использовать экземпляр этого класса как целое число при индексации массива или выборе символа из строки?

Если это вопрос перегрузки оператора, то какой оператор?

В качестве конкретного примера у меня есть класс Random, и я выбираю символы в случайных местах в строке, например:

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

Но вместо этого я бы предпочел other_chars += chars.at(R); Но как?

Ответы [ 3 ]

5 голосов
/ 23 октября 2011

Вам нужен определенный пользователем оператор преобразования .

class Random
{
  int x_;

  public:
    operator int() const { return x_; }
};
1 голос
/ 23 октября 2011

Требуется перегрузка оператора typecast: operator int() { return _value; }.

Здесь - более подробное объяснение.

1 голос
/ 23 октября 2011

Вы пробовали перегрузить operator int() внутри оболочки Random.Я считаю, что это должно быть что-то вроде,

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