webentwicklung-frage-antwort-db.com.de

Mitgliedserklärung nicht gefunden

Ich habe an einem C++ - Projekt mit einem normalen Texteditor gearbeitet. Später habe ich alle Dateien in Eclipse importiert, um das Debuggen zu vereinfachen.

In Eclipse passiert etwas Seltsames. Es beschwert sich über "Mitgliedserklärung nicht gefunden", auch wenn ich die Header-Datei eingefügt habe. Die Header-Datei hat die Funktionsdefinition.

Wie behebe ich dieses Problem?

Danke im Voraus

"Elementdeklaration nicht gefunden" ist ein Fehler, der vom statischen Eclipse-Analysetool ( codan ) verursacht wird. Wenn Sie diese Fehlermeldung erhalten, die Kompilierung jedoch erfolgreich ist, ist dies ein falsches positives Ergebnis. Es ist bekannt, dass ältere Versionen dieses Tools einige Fehlalarme auslösen, siehe zum Beispiel diesen Fehlerbericht . Daher empfehle ich, Eclipse CDT auf die neueste Version zu aktualisieren.

Eine weitere Ursache für diesen Fehler ist ein nicht behobenes Include, das verhindert, dass Eclipse einen Teil Ihres Codes korrekt analysiert. Durch Auswahl von Index -> Search For Unresolved Includes im Kontextmenü des Projekts erhalten Sie eine Liste der nicht aufgelösten Includes. Siehe diese Antwort für Einzelheiten zur Fehlerbehebung.

Hier ist ein Beispiel:

class C {
  void f(std::vector<int>&);
};

void C::f(std::vector<int>&) {} // Member declaration not found

Das obige Beispiel verursacht den Fehler "Member-Deklaration nicht gefunden" in Eclipse CDT, auch wenn <vector> enthalten, aber nicht behoben ist (aufgrund von falsch konfigurierten Include-Pfaden).

18
vitaut

Ich habe dieses Problem auch mehrmals in Eclipse erlebt, obwohl das Erstellen erfolgreich war. Wir können dieses Problem einfach lösen, indem wir den C/C++ - Index im Projektmenü neu erstellen. :)

6
Srijeyanthan

Ich habe festgestellt, dass " Member-Deklaration nicht gefunden " auch angezeigt wird, wenn Sie eine Klasse mit einem Namen erstellen, der bereits verwendet wird oder ein Schlüsselwort ist.

1
Luca Davanzo

Auch mit CDT 9.2.1 und Eclipse Neon 4.6.3 "Member Declaration not found" werden Probleme gemeldet. Wie von Srijeyanthan beantwortet, sollte das folgende Problem behoben werden: Projekt> C/C++ - Index> Neu erstellen.

0
natmat

Dieses Problem trat auch beim Aufteilen von Quell- und Header-Dateien in Eclipse auf. Dieses Problem wurde durch "Implementieren von Methoden" behoben. Eclipse wurde nicht manuell eingegeben und das Projekt erstellt. Durch das Implementieren von Methoden wurden "Inline-Funktionen" zur Quelldatei hinzugefügt.

0
user8787937

Ich habe in meiner CPP-Datei einen Fehler gefunden, durch den diese Nachricht erstellt wird. Ich hatte namespace std { am Anfang der Datei und platzierte neue Funktionen, die ich nach dem Schließen von } für namespace erstellte. Das Verschieben des schließenden } an das Ende der Datei, sodass sich die definierten Dateien nun in der namespace befanden, behebte die Fehlermeldung.

Beispiel, das den Fehler erzeugt.

#include "MyStrFuncs.h"

**namespace** std {

MyStrFuncs::MyStrFuncs() {
    // TODO Auto-generated constructor stub
}

MyStrFuncs::~MyStrFuncs() {
    // TODO Auto-generated destructor stub
}

}  // This ends the **namespace**

//Additional functions will now generate the member declaration not found error...

int MyStrFuncs::str2i(string strIn) {
    int results;
    istringstream convert(strIn);

    if( !(convert)>>results) results = 0;

    return results;
}
// Fix by moving closing } for namespace to here.  Good luck.
0
Kurt Sanger

Ich habe dieses Problem in Eclipse, aber das Einrichten des Terminals war erfolgreich. Also erstelle ich den C/C++ - Index in Eclipse neu: Rechtsklick auf das Projekt -> Index -> Neu erstellen.

0
le vantard