Как я могу “переопределить” [] для принятия двух аргументов в C++?

Я пытаюсь создать класс битовый вектора в C++ для моделирования некоторых аппаратных средств. В большей части HDLs (аппаратные языки описания), что я знаю, на определенные биты ссылаются как это:

my_vector[bit_position]

и на подвекторы ссылаются как это:

my_vector[msb:lsb]

или

my_vector[msb,lsb]

Я хочу смочь сделать что-то похожее со своим классом битовый вектора. Есть ли любой способ сказать operator[] принять два аргумента?

Альтернативы, которые я рассмотрел:

  1. использование a range метод:

    my_vector.range(msb,lsb)

  2. использование строки и парсинг его:

    my_vector["msb:lsb"]

Но ни один из них не привлекателен. Первое, потому что это слишком отличается от способа, которым это смоделировано в HDL, второе, потому что мне не нравится иметь дело со строками, когда я не имею к, и это кажется неэлегантным.

Что лучший способ состоит в том, чтобы сделать это?

10
задан Nathan Fellman 20 October 2010 в 12:35
поделиться