deleted-functions

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

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%     
___ tag123pointer ___ Datentyp, der auf einen anderen gespeicherten Wert zeigt. Eine Zeigervariable enthält eine Speicheradresse einer anderen Entität (Variable oder Funktion oder andere Entität). Dieses Tag sollte für Fragen verwendet werden, bei denen Zeiger und keine Referenzen verwendet werden. Die gebräuchlichsten Programmiersprachen, die Zeiger verwenden, sind C-, C ++ -, Go- und Assemblersprachen. Verwenden Sie ein bestimmtes Sprach-Tag. Andere hilfreiche Tags sind Methode, Funktion, Struktur usw., die die Verwendung von Pointer beschreiben. ___ tag123compilererrors ___ Ein Fehler, der während der Kompilierungsphase generiert wird, oft aufgrund von Problemen mit ungültiger Syntax und / oder Typen. Vergleiche mit [Laufzeitfehler]. ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ answer21409682 ___

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

%Vor%

In Arkanoid.cpp:

%Vor%     
___ tag123edeletedfunctions ___ C ++ 11 hat die Möglichkeit eingeführt, Elementfunktionen als gelöscht zu markieren, was bedeutet, dass jeder Versuch, diese Funktionen aufzurufen, einen Kompilierungsfehler verursacht. Dies kann verwendet werden, um eine missbräuchliche Verwendung einer Klasse zu verhindern. Wenn eine Klasse beispielsweise eine eindeutige Ressource verwalten soll, sollte ein Objekt dieser Klasse nicht kopierbar sein. Dies kann erreicht werden, indem seine Kopierkonstruktor- und Kopierzuweisungsfunktionen gelöscht werden. ___ answer21409712 ___

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.

    
___ qstntxt ___

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%     
___
3
Antworten

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

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...
28.01.2014, 15:14
2
Antworten

Was ist "= löschen"?

Was bedeuten diese beiden seltsamen Codezeilen? %Vor%     
13.09.2010, 09:24