2016-05-13 7 views
2

Einige ähnliche Fragen werden zuvor veröffentlicht, aber ich konnte die Antwort für meine spezifische Anforderung nicht sehen.Neu kompilieren Sie die binäre oder die abgeleiteten Klassen für das Hinzufügen neuer Methode in der Basisklasse

Ich habe eine Basisklasse, die in eine gemeinsame Bibliothek (.so) kompiliert wird. Diese Bibliothek wurde verwendet und es gibt einige Klassen, die von meiner Basis abgeleitet sind und die virtuellen Funktionen meiner Basisklasse verwenden.

Jetzt muss ich meine Basisklasse ändern, um eine neue Methode (NON-VIRTUAL) hinzuzufügen, die intern verwendet wird. Ich werde dann die gemeinsam genutzte Bibliothek neu kompilieren.

Müssen die abgeleiteten Klassen neu kompiliert werden? Muss die mit den abgeleiteten Klassen und der gemeinsam genutzten Bibliothek erstellte Binärdatei neu kompiliert werden?

Antwort

1

In Ihrem Fall müssen Sie die abgeleiteten Klassen nicht neu kompilieren. Eine Neukompilierung ist nur erforderlich, wenn das Wissen über die binäre Struktur der Klasse, die aus der Header-Datei stammt (die in den abgeleiteten Klassen verwendet wird), geändert wird. Dies geschieht, ist

  • ein Datenelement hinzugefügt wird
  • Eine Modifikation der Vtable (Änderung der virtuellen Funktionen) hergestellt ist
  • Eine Modifikation einer bestehenden Funktionssignatur besteht
  • Änderungen an Inline-Funktionen

Da keiner hier auftritt, sollten Sie in Ordnung sein. Referenziert from here

+0

Es ist keine Neukompilierung erforderlich, wenn eine neue Methode hinzugefügt wird. Danke Smeeheey. –

Verwandte Themen