Ich bin neu in der Spieleentwicklung und sehr neu in C ++, aber ich habe angefangen, ein kleines Arkanoid-Spiel zu entwickeln. Ich habe es vorher ausgeführt, aber nach Refactoring (Einführung der ArkanoidGame-Klasse) kompiliert es nicht und ich kann nicht herausfinden, warum.
Der Fehler, den ich bekomme, ist:
%Vor%Ich verstehe einfach nicht, was das bedeutet und habe keine Ahnung, was zu tun ist, um es zu beheben.
Ich habe die fraglichen Klassen eingefügt:
Haupt.cpp:
%Vor%Arkanoid.h:
%Vor%ArkanoidGame.cpp:
%Vor% Vermutlich hat entweder Pad
oder Ball
(oder beide) keinen Standardkonstruktor; daher kann man nicht für eine Klasse generiert werden, die sie enthält. Sie müssen mit einem ihrer deklarierten Konstruktoren initialisiert werden.
Die beste Lösung ist, Ihre seltsame Funktion init
zu entfernen und sie durch einen Konstruktor zu ersetzen:
Wenn Sie aus irgendeinem Grund wirklich einen zweistufigen Initialisierungstanz haben möchten, müssen Sie Standardkonstruktoren für beide Pad
und Ball
angeben. Ich würde das aber nicht empfehlen; Es gibt weniger Spielraum für Fehler, wenn ein Objekt nicht in einem ungültigen Zustand erstellt werden kann.
Ich denke, dass das Problem ist, dass entweder Klasse Pad oder Klasse Ball nicht den Standardkonstruktor hat (Sie haben zwei dtat Mitglieder dieser Klassen in der Klassendefinition von ArkanoidGame: Pad Pad und Ball Ball;) . In diesem Fall hat der Compiler den Standardkonstruktor der Klasse ArkanoidGame als gelöscht definiert (sonst wird er schlecht gebildet). Jedoch in der ersten Zeile von main
%Vor%Sie versuchen, den Standardkonstruktor der Klasse ArkanoidGame aufzurufen.
Beachten Sie auch, dass Deklarationen von Elementfunktionen in der Klassendefinition nicht qualifizierte Namen haben dürfen. So zum Beispiel diese Deklaration
%Vor%ist ungültig. Sollen
sein %Vor%Sie sollten einen Konstruktor für ArkanoidGame bereitstellen. In Arkanoid.h:
%Vor%In Arkanoid.cpp:
%Vor%Tags und Links c++ pointers compiler-errors deleted-functions