Ich mache ein Spiel und ich habe eine Klasse namens Man
und eine Klasse namens Block
in ihrem Code sie beide brauchen einander, aber sie sind in separaten Dateien. Gibt es eine Möglichkeit, eine Klasse "vorzudefinieren"? Wie das @class-Makro von Objective-C?C++: Zwei Klassen, die einander brauchen
Antwort
Es wird eine zirkuläre Abhängigkeit genannt. In der Klasse Two.h
class One;
class Two {
public:
One* oneRef;
};
Und in der Klasse One.h
class Two;
class One {
public:
Two* twoRef;
};
Die "Klasse One"; und "Klasse Zwei" Direktiven vergeben jeweils einen Klassennamen "Eins" und "Zwei"; aber sie definieren keine anderen Details über den Namen hinaus. Daher können Sie Zeiger der Klasse erstellen, aber Sie können nicht die ganze Klasse wie so umfassen:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
Der Grund die beiden obigen Beispiele nicht kompiliert werden, weil während der Compiler es weiß, ist eine Klasse Eins, es doesn‘ Sie wissen, welche Felder, Methoden oder virtuellen Methoden die Klasse Eins enthalten könnte, weil nur der Name definiert wurde, nicht die eigentliche Klassendefinition.
Ja.
class Man;
Dies wird Man
als "unvollständiger Typ" deklarieren. Sie können Zeiger oder Verweise darauf und einige andere Dinge deklarieren, aber Sie können keine Instanz erstellen oder auf Mitglieder davon zugreifen. Dies ist keine vollständige Beschreibung dessen, was Sie mit einem unvollständigen Typ machen können und was nicht, aber es ist die allgemeine Idee.
Wichtig zu beachten, Sie können später weitermachen und den vollständigen Typ einschließen und Zugriff erhalten. Sie könnten unvollständige Typen in der Kopfzeile verwenden und dann die vollständige Kopfdefinition in die cpp aufnehmen, um sie zu verwenden. –
- 1. Objekte, die für beide Seiten brauchen einander
- 2. Rundreferenz Problem mit Klassen, die einander
- 3. Python-Klassen erben von einander
- 4. Speicherlayout von zwei C++ Klassen, die die gleichen Mitglieder teilen
- 5. Wie organisiere ich C# -Klassen, die voneinander erben, aber auch Eigenschaften besitzen, die von einander erben?
- 6. 2 Klassen referenzieren einander ist das ok?
- 7. C# Zwei-Klassen und zwei Tabellen verknüpfen
- 8. Prozesse, die einander verfolgen
- 9. Brauchen Sie Hilfe mit Klassen Modellierung
- 10. Zwei Ansichten ontop von einander, können nicht die hintereinander
- 11. Wie haben zwei Modelle verweisen einander Django
- 12. C++ und Swift mögen einander nicht
- 13. zwei Klassen, die sich gegenseitig referenzieren
- 14. Eine Klasse, die von zwei Klassen in C++ erbt
- 15. C++, zwei Klassen mit gemeinsamen Bedürfnissen
- 16. C# Kombinieren Sie zwei Klassen von Strings
- 17. Zwei Klassen, die sich aufeinander beziehen
- 18. C++ Kopie von zwei abgeleiteten Klassen
- 19. können sich zwei Klassen mit C++ sehen?
- 20. Unity-Registrierungen überschreiben einander
- 21. Bootstrap-Gitterspalten, die einander überlappen
- 22. C++ klasse warum brauchen main?
- 23. Wie zu definieren, dass die einander enthalten
- 24. C# öffentliche Aufzählungen die Klassen
- 25. Ansicht einander
- 26. Brauchen wir Fixpunktkombinatoren in C#?
- 27. ArrayList von zwei Klassen
- 28. Refactoring zwei grundlegende Klassen
- 29. getElementsByClassName() mit zwei Klassen
- 30. Php Zwei Combo-Box in einer Form steuern einander. Wie?
Klingt wie, was Sie wollen, ist eine Vorwärtsdeklaration. – mooware
+1 für BlockDude. –