Я пытаюсь создать класс битовый вектора в C++ для моделирования некоторых аппаратных средств. В большей части HDLs (аппаратные языки описания), что я знаю, на определенные биты ссылаются как это:
my_vector[bit_position]
и на подвекторы ссылаются как это:
my_vector[msb:lsb]
или
my_vector[msb,lsb]
Я хочу смочь сделать что-то похожее со своим классом битовый вектора. Есть ли любой способ сказать operator[]
принять два аргумента?
Альтернативы, которые я рассмотрел:
использование a range
метод:
my_vector.range(msb,lsb)
использование строки и парсинг его:
my_vector["msb:lsb"]
Но ни один из них не привлекателен. Первое, потому что это слишком отличается от способа, которым это смоделировано в HDL, второе, потому что мне не нравится иметь дело со строками, когда я не имею к, и это кажется неэлегантным.
Что лучший способ состоит в том, чтобы сделать это?