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%Vermutlich hat entweder %code% oder %code% (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 %code% zu entfernen und sie durch einen Konstruktor zu ersetzen:
%Vor%Wenn Sie aus irgendeinem Grund wirklich einen zweistufigen Initialisierungstanz haben möchten, müssen Sie Standardkonstruktoren für beide %code% und %code% 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 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%