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.
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.
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.
Es gibt einen Weg, aber Sie müssen den Boost-Header in Ihre Datei einfügen:
%Vor%Tags und Links c++ shared-ptr c++98 forward-declaration