Wie kann ich [] überschreiben, um zwei Argumente in C ++ zu akzeptieren?

Ich versuche, eine Bitvektorklasse in C ++ zu erstellen, um Hardware zu modellieren. In den meisten mir bekannten HDLs (Hardwarebeschreibungssprachen) wird auf bestimmte Bits wie folgt verwiesen:

my_vector[bit_position]

uf @ und Untervektoren wird folgendermaßen verwiesen:

my_vector[msb:lsb]

ode

my_vector[msb,lsb]

Ich möchte in der Lage sein, mit meiner Bitvektor-Klasse etwas Ähnliches zu tun. Gibt es eine Möglichkeit, @ zu sagoperator[], um zwei Argumente zu akzeptieren?

Die Alternativen, die ich in Betracht gezogen habe, sind:

Verwendung einerrange Methode

my_vector.range(msb,lsb)

benutze einen String und analysiere ihn:

my_vector["msb:lsb"]

Aber keiner von ihnen ist attraktiv. Das erste, weil es sich zu sehr von der Art und Weise unterscheidet, wie es in HDL modelliert wird, das zweite, weil ich es nicht mag, mit Strings umzugehen, wenn ich es nicht muss, und es scheint unelegant.

Wie geht das am besten?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage