🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #2046

Re: Operatorenueberladung bei Bitfelder

#2046
From: Dietmar Kuehl
Date: Tue, 09 Apr 1996 11:20
53 lines
2165 bytes
Hi,
Dmitrij Sverdlov (sverdlov@informatik.hu-berlin.de) wrote:
: Ich schreibe gerade eine Klasse für Bitfelder und komme nicht weiter.
: Bisher habe ich folgendes geschafft:

[groesstenteils geloescht]

: char bitfield::operator[] (unsigned bitNr)
: {
:  return ( bitarray [bitNr/8] ) & ( 1 << bitNr%8 ) ;
: }

: Mit der Überladung von [] habe ich nun Ausdrücke der Form

: bitfield Bitfield(100);
: ...
: if ( Bitfield[45] )  { ... } 
: ...

: ermöglicht, also das Lesen der Bits. Wie kann ich aber die Bits
: schreiben, also z.B.  Bitfield[67] = 1;  ?

Mach es doch einfach so, wie es bei der Standard-Klasse 'bitset'
gemacht wird:  Ueber eine Proxy-Klasse, die eine Referenz auf ein Bit
darstellt ('bitset' ist zugegebenermassen relativ unbekannt; in
Plauger's Buch wird sie als 'bits' dokumentiert):

  template <size_t N> class bitset
  {
    //...
  public:
    class reference
    {
      friend class bitset<N>;
      //...
    public:
      reference const &operator= (reference const &newVal);
      reference const &operator= (bool newVal);
      operator bool() const;
    };

    reference operator[] (unsigned int bitIdx);
    bool      operator[] (unsigned int bitIdx) const;
  };

Die Implementation der relevanten Funktionen ist relativ einfach: Die
'reference' wird mit einer Referenz auf den entsprechenden 'char' und
der Bitnummer (oder der entsprechenden Maske) konstruiert. Die
Operatoren von 'reference' lassen sich dann einfach implementieren.
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl/
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID: <4kdh6o$1ol@news.BelWue.DE>
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
References: <4kbu92$fc5@hahn.informatik.hu-berlin.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl)
Newsgroups: de.comp.lang.c++
Subject: Re: Operatorenueberladung bei Bitfelder
Date: 9 Apr 1996 11:20:56 GMT
Organization: Fakultät für Mathematik und Informatik
Message-ID: <4kdh6o$1ol@news.BelWue.DE>
References: <4kbu92$fc5@hahn.informatik.hu-berlin.de>
Reply-To: dietmar.kuehl@uni-konstanz.de
NNTP-Posting-Host: uzwil.informatik.uni-konstanz.de
X-Newsreader: TIN [version 1.2 PL2]