Eine der Klassen in meinem Programm verwendet eine Bibliothek von Drittanbietern. Bibliotheksobjekt ist ein privates Mitglied meiner Klasse:C++ - Header - Trennung zwischen Schnittstelle und Implementierungsdetails
// My.h
#include <3pheader.h>
class My
{
...
private:
3pObject m_object;
}
Das Problem dabei - jede andere Einheit in meinem Programm, dass meine Klasse verwendet, sollte enthalten 3er-Header konfiguriert werden. Das Verschieben auf eine andere Art von 3p wird den gesamten Build gefährden ... Ich sehe zwei Möglichkeiten, um dies zu beheben - man soll 3pObject extern machen und m_Object in einen Zeiger verwandeln, der im Konstruktor initialisiert wird; Zweitens ist es, eine "Schnittstelle" und "Fabrik" -Klassen zu erstellen und sie zu exportieren ...
Können Sie einen anderen Weg vorschlagen, um das zu lösen?
Irgendein Grund, boost :: scoped_ptr nicht zu benutzen? – grigy
Nichts Besonderes - ich war es gewohnt, auto_ptr zu verwenden - es ist in diesem Fall wahrscheinlich angemessener, scoped_ptr zu verwenden, da es keine Eigentumsübertragung gibt –