Manchmal gibt es keinen Ausweg. Man muss eine DoNothing()-Prozedur oder eine IsTrue()-Funktion implementieren. Das war zumindest der erste Gedanke von D.C., als er eine Klasse mit einer Variable namens "self" (selbst) sah...


    class CERTlib
    {
      private:
        CERTlib*  self; // Zeiger auf sich selbst
      ...
    }


Er dachte zuerst an ein seltsames Provisorium oder, noch schlimmer, einen irreführenden Namen für eine sinnvolle Variable. Als er dann im Konstruktor nachsah, war alles klar...


    CERTlib::CERTlib(...)
    {
       // Speichere Zeiger auf sich selbst
       selbst = this;
       ...
    }


Das musste irgendein vergessenes Provisorium sein, dachte D.C., und durchsuchte den Code. Es stellte sich heraus, dass es noch an exakt einer Stelle verwendet wurde...


    fnCERTlibDeinitialisierung( this->self );


(Übersetzt von Andreas Moser)