Fehler C2280: versucht, auf eine gelöschte Funktion zu verweisen

8

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%     
Herter 28.01.2014, 15:14
quelle

3 Antworten

14

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:

%Vor%

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.

    
Mike Seymour 28.01.2014, 15:26
quelle
5

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%     
Vlad from Moscow 28.01.2014 15:24
quelle
3

Sie sollten einen Konstruktor für ArkanoidGame bereitstellen. In Arkanoid.h:

%Vor%

In Arkanoid.cpp:

%Vor%     
Anton Poznyakovskiy 28.01.2014 15:24
quelle