Ich verwende normalerweise, fast ohne zu denken, Vorwärtsdeklarationen, damit ich Header nicht einschließen muss. Etwas in diesem Beispiel:Alternative, um Deklarationen weiterzuleiten, wenn Sie #include nicht möchten
Einige Entwickler verwenden diese Methode gerne, um Probleme mit Einschlusskreisen zu vermeiden. Ich benutze es vielmehr, um den Overhead in umfangreichen Inklusionshierarchien zu minimieren, ein wichtiger Teil des physikalischen Designs (insbesondere für größere Projekte).
In einigen Fällen mag ich jedoch gerne Mitglieder als normale Objekte anstelle von Zeigern zu deklarieren, um vom automatischen Konstruktions-/Zerstörungsmechanismus zu profitieren. Dies führt zu dem Problem, dass nach vorn Erklärungen kann nicht mehr verwendet werden, da der Compiler die Klassendefinition in einem solchen Fall braucht, zB:
//-----------------------
// foo.h
//-----------------------
class foo
{
foo();
~foo();
};
//-----------------------
// bar.h
//-----------------------
class foo; // Not enough given the way we declare "foo_object"..
#include "foo.h" // ..instead this is required
class bar
{
bar();
~bar();
foo foo_object;
};
So würde ich mich freuen, wenn jemand eine alternative Sprachkonstrukt weiß, wo hier verwendet werden, so dass ich "foo_object" wie im Beispiel gezeigt deklarieren kann, aber ohne seinen Header einzuschließen.
Grüße
/Robert
benötigt dies nicht immer noch die Initialisierung von foo_ptr im Konstruktor von bar? –
tatsächlich, tut es. hehe –
Und was, wenn Sie nicht automatische Zeiger benutzen können? – xan