Wie kann ich in einer abgeleiteten Klasseninformation aufbewahren, die während der Initialisierung einer Basisklasse erhalten wird?

StackOverflow https://stackoverflow.com//questions/22016200

Frage

Ich habe die Situation, dass, als ein Nebeneffekt, mit Daten aufzunehmen, um eine Basisklasse zu initialisieren, eine abgeleitete Klasse ein Informationsstück berechnet, das später über seine Schnittstelle verfügbar sein muss. Im Folgenden finden Sie eine Idee des Problems, indem Sie ein Boolean als gewünschte Informationen verwenden:

generasacodicetagpre.

Das Problem dabei ist, dass die wichtige Informationsinformation während der Initialisierung der Basisklasse berechnet wird, bevor die eigenen Datenmitglieder der abgeleiteten Klasse initialisiert werden. Ich muss somit noch nicht auf die Datenelemente der abgeleiteten Klasse schreiben. Obwohl ich sicher bin, dass ich mit einem booleschen booleschen entkommen kann, das noch nicht offiziell auf einer beliebigen Plattform erstellt wurde, in der ich in den letzten 20 Jahren getroffen habe, würde ich vermeiden wollen, dass ich nicht definiertes Verhalten aufrufen möchte.

Beachten Sie, dass die betreffenden Informationen überhaupt nichts mit der Basisklasse zu tun haben, sodass sie in der Basisklasse speichern kann, ist keine Option. Die Informationen können auch nicht in einem statischen Datenelement gespeichert werden. Ich habe ein paar Ideen, wie ich den Code refaktieren kann, damit ich das tun kann, aber die, die ich mit mir einfallen könnte, scheint für ein so kleines Thema ziemlich aufdringlich zu sein. Also frage ich mich, ob einer von euch etwas einfaches kommen kann?


note : Da wir auf einer eingebetteten Plattform sind, stecken wir bei GCC 4.1.2. So streng C ++ 03 (einschließlich TR1), aber kein C ++ 11.

War es hilfreich?

Lösung

In C ++ 11 können Sie etwas tun:

generasacodicetagpre.

In C ++ 03 können Sie Ihre abgeleitete Klasse an etwas ändern:

generasacodicetagpre.

Andere Tipps

Wenn Sie auf Ihrem Compiler verfügbar sind, können Sie einen delegierenden Konstruktor verwenden:

generasacodicetagpre.

Mit C ++ 03 können Sie ein Standardargument verwenden:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top