Verständnis weiß, dass ich das Problem der rekursiven Definition von Typen in C++ für Membervariablen:die „Mutual Rekursion Ausgabe“ für den Rückgabetyp von Funktionen
#include "B.h"
class A
{
B b;
};
#include "A.h"
class B
{
A b;
};
Der Compiler darüber beschwert, weil Es ist nicht möglich, den Speicher auf diese rekursive Weise zuzuweisen.
Was ich nicht verstehe, ist, dass dies auch zu Funktionsdefinitionen zu gelten scheint:
#include "B.h"
class A
{
B foo();
};
#include "A.h"
class B
{
A bar();
};
Die Compiler gibt den gleichen Fehler:
error: ‘A’ does not name a type
error: ‘B’ does not name a type
Warum ist das? Es macht für mich keinen Sinn, dass der Compiler Platz für den Rückgabetyp reservieren muss. Soll ich dieses Problem mit Pointern und Forward-Deklaration lösen? Nach meiner Erfahrung (von Java kommend) ist es ziemlich üblich, dass Programmierer diese rekursiven Definitionen zum Entwerfen von Software verwenden. Es scheint so schwer zu sein, dies in C++ zu realisieren.
Der Yes-Bereich muss für den Rückgabewert reserviert werden. Java gibt alle Klassenobjekte als Referenz zurück. –
Forward-Referenz ist genug, um Ihre Inter-Abhängigkeit zu lösen. – Jarod42
War meine Frage schlecht? Ich frage mich, warum es Downvotes gibt. Vielleicht kann mir jemand Feedback geben und ich kann mich beim nächsten Mal verbessern. Ich würde es schätzen. – aeduG