2012-04-09 12 views
4

Ich schreibe eine C++ - Bibliothek in Xcode 4.2xcode - "Versuch, eine gelöschte Funktion zu verwenden" - was bedeutet das?

Eine meiner Klassen wird nicht mit diesem Fehler kompilieren: "versuchen, eine gelöschte Funktion zu verwenden".

Es gibt keinen spezifischen Hinweis, über welche Funktion es spricht. Ich möchte den Klassencode hier nicht posten, aber hat jemand eine Idee, was dieser Fehler bedeutet? Es ist nirgendwo auf Google gefunden werden ... :(

dank ein Haufen

Roey

+1

Nun, es klingt wie Sie versucht haben, eine gelöschte Funktion zu verwenden (anzurufen oder die Adresse zu nehmen), aber wenn Sie den Code nicht veröffentlichen möchten, ist es unwahrscheinlich, dass Sie viel mehr Hilfe bekommen können als in der Fehlermeldung, die Sie gepostet haben. –

+0

Nun, Sie haben meine Frage im Grunde mit meiner Frage beantwortet. Ich weiß, dass ich versucht habe, eine gelöschte Funktion zu verwenden. Der Fehler hat mir das gesagt. aber was ist eine gelöschte Funktion? –

+0

Das war mein Punkt. Ohne mehr Kontext - den Code - können wir nur die Fehlermeldung neu formulieren. Wenn Sie nicht wissen, was eine gelöschte Funktion ist, dann fragen Sie das als Frage. –

Antwort

2

In C++ 11 Sie können Funktionen erklären als gelöscht:

struct Foo { 
    Foo(const Foo &) = delete; 
}; 

Versuch eine solche Funktion zu verwenden, ist ein Fehler.Der Zweck ist, dass in diesem Beispiel eine Kopie dieses Typs nicht möglich ist.Dies ist ein direkterer Ersatz für den nicht kopierbaren Trick, der vor C++ 11 verwendetwurde

Außerdem gibt es Regeln in der C++ - Spezifikation, die dazu führen, dass Elementfunktionen implizit gelöscht werden.

Der Fehler sagt Ihnen, dass Ihr Programm versucht, eine gelöschte Funktion zu verwenden. Sie müssen den Fehler, den Sie erhalten, für detailliertere Hilfe posten.

8

Ich hatte eine ähnliche Nachricht mit Threads (C++ 11). Es stellte sich heraus, dass ich die falsche Anzahl von Parametern an die vom Thread aufgerufene Funktion übergeben hatte, so dass der Thread keine passende Funktion fand und diese Nachricht gab.

1

Für mich Es löste es, wenn ich "diesen" Zeiger als Parameter für die Funktion übergeben.

3

Um Carlos 'Antwort hinzuzufügen, hatte ich die richtige Anzahl von Argumenten, aber eines der Argumente wurde als Referenz übergeben. Das Hinzufügen von ref() um die Variable hat es für mich behoben. Siehe here.