Vorwärtsdeklarationen und shared_ptr

8

Ich versuche, meinen Code zu refactorieren, so dass ich Vorwärtsdeklarationen verwende, anstatt viele Header einzubeziehen. Ich bin neu und habe eine Frage zu boost :: shared_ptr.

Sagen wir, ich habe die folgende Schnittstelle:

%Vor%

Ich habe dann eine Funktion in einer anderen Klasse, die ein IStarterPtr-Objekt als Argument verwendet, sagen wir:

%Vor%

Wie kann ich IStarterPtr deklarieren, ohne IStarter.h einzubeziehen?

Ich verwende C ++ 98, wenn das relevant ist.

    
Baz 16.05.2013, 12:56
quelle

4 Antworten

7

Gemeinsam genutzte Zeiger arbeiten mit vorausberechneten Typen, solange Sie nicht * oder - & gt; auf ihnen sollte es so funktionieren, einfach zu schreiben: -

%Vor%

Sie müssen <boost/shared_ptr.hpp> natürlich einfügen

    
jcoder 16.05.2013, 13:08
quelle
2

Obwohl es eine Header-Datei hinzufügen würde, könnten Sie das in eine separate Header-Datei einfügen:

%Vor%

und dann fügen Sie es sowohl in IStarter.h als auch in Ihrem anderen Header ein und vermeiden Sie die Code-Duplizierung (obwohl es in diesem Fall ziemlich klein ist).

Es könnte jedoch bessere Lösungen geben.

    
JBL 16.05.2013 13:08
quelle
2

Sie können nicht declare typedefs in C ++ 98 weiterleiten, also was ich normalerweise in diesem Fall mache, ist die Typedefs herauszunehmen, die ich brauche, und sie in eine types.h Datei oder etwas Ähnliches zu setzen. Auf diese Weise ist der allgemeine Typcode immer noch von der Definition der Klasse selbst getrennt.

    
Mark B 16.05.2013 13:13
quelle
1

Es gibt einen Weg, aber Sie müssen den Boost-Header in Ihre Datei einfügen:

%Vor%     
Pierre Fourgeaud 16.05.2013 13:12
quelle