Ich verwende std :: unique_ptr in diesem Code, der kompiliert und ausgeführt wird, wie ich es erwartet habe.
%Vor%Ich erhalte jedoch Fehlermeldungen von Eclipse CDT. In der vierten Zeile: Methode 'Einfügen' konnte nicht aufgelöst werden, Methode 'Ende' konnte nicht aufgelöst werden.
Früher habe ich auch Fehler beim Aussehen des Namens std :: unique_ptr bekommen. Dies wurde gelöst, indem das Vorprozessorsymbol% co_de% gesetzt und der Index neu aufgebaut wurde, wie in der Antwort zu diese Frage.
Gibt es eine Möglichkeit, CDT zu verstehen, dass s vom Typ std :: string * ist und dass es in std :: string für s- & gt; insert () und s- & gt; end () aussehen sollte?
PS: Ich benutze Eclipse 3.7.1 und CDT 8.0.0.201106081058
PS2: Ich hätte das gerne als Kommentar in der obigen Frage gepostet, aber ich kann nicht, vermutlich weil ich ein neuer Benutzer bin
Es scheint, als ob der Eclipse-CDT-Indexer nicht in der Lage ist, den Zeigertyp unique_ptr :: abzuleiten, der auch als Rückgabetyp von operator- & gt; () verwendet wird. Sie können dies sehen, wenn Sie etwas wie
eingeben %Vor% Ein Fehler wird "erkannt", dass es keine Überladung geben würde und dass der einzige Kandidat reset(?)
wäre. Das ist offensichtlich ein Fehler.
Ich habe das gleiche Problem in der neueren Version von Eclipse CDT (9.3). Ich habe alle Tricks ausprobiert, die ich im Internet gefunden habe. Aber der Indexer konnte nie den Typ von std::unique_ptr<T>::operator->()
ableiten. Schließlich entschied ich mich für eine sehr einfache Problemumgehung:
Ich füge ECLIPSE_INDEXER_WORKAROUND
zu Präprozessorsymbolen hinzu (natürlich nur zum Indizieren von Optionen, nicht zum Erstellen) in Eclipse, und die Indexierung ist wieder nützlich!
Um den Code weniger zu verschmutzen, können wir ein Makro verwenden:
%Vor%Tags und Links eclipse ide eclipse-cdt c++ c++11