Wird die neue Memberfunktion in die d-Zeigerklassendefinition eingefügt, um die Binärkompatibilität zu unterbrechen?fügt neue Member-Funktion in D-Zeiger-Klasse Break-Binär-Kompatibilität?
Zum Beispiel, wird die neue Definition unten Binärkompatibilität im Vergleich zum Original brechen? (Seite Frage, gibt es ein Werkzeug, das mir sagen wird, wenn ein neue .so binäre Kompatibilität bricht im Vergleich zum alten .so Wenn nicht, wie kann ich überprüfen manuell?)
Original:
#ifndef __TESTBC_H__
#define __TESTBC_H__
class APrivate;
class A
{
public:
int get() { d->update(); return _d->get(); }
private:
APrivate *_d;
};
class APrivate
{
public:
int get() { return _val; }
void update() { _val = 1; }
private:
int _val;
};
#endif
Neu:
FYI: Ich verstehe d Zeiger Klasse sollte in der cc-Datei anstelle von Header angegeben werden. Das obige Beispiel wurde entwickelt, um auf das Problem der Binärkompatibilität zu fokussieren.
Die Kachel kann verbessert werden ... es verdeutlicht besser, dass eine neue Funktion zu einer privaten Klasse hinzugefügt wird. – IsaacS