2010-01-02 6 views
13

Jede IDE, die ich ausprobiert habe, liefert keine Code-Vervollständigung, wenn etwas Template-bezogen verwendet wird. Zum BeispielGibt es eine C++ IDE, die Vorlagen gut verarbeitet?

boost::shared_ptr<Object> ptr; 
ptr->[cursor is here] 

Gibt es IDE, die Code-Vervollständigung in diesem Fall zur Verfügung stellen kann?

Antwort

6

Eigentlich ist dies eine ziemlich einfache Vorlage Use-Case, Qt Creator kann dies einfach und komplexeren Vorlagencode auch behandeln.

+1

Es schlägt für den boost :: static_pointer_cast (baseClassObject) -> [Cursor ist hier], wobei baseClassObject den Typ BaseClass und DerivedClass von BaseClass abgeleitet ist. Aber momentan ist es momentan das Beste. –

+1

Sie werden immer Fälle finden, die in einer bestimmten IDE funktionieren, aber nicht in einer anderen. Die Frage ist, was in den meisten Fällen funktioniert. Qt Creator ist eine sich entwickelnde IDE und ist kostenlos. Ich bin auch ziemlich sicher, dass, wenn Sie einen Fehler in einem bestimmten Fall, wie dem, den Sie mit boost :: static_pointer_cast erwähnt haben, werden sie adressiert werden. –

+0

Was ist die Verbindung zwischen "ist eine sich entwickelnde IDE" und "ist eigentlich eine * gute * IDE"? Wenn es sich entwickelt, bedeutet das, dass es eines Tages * gut werden könnte, es bedeutet nicht automatisch, dass es jetzt * gut ist *. – jalf

7

Visual Studio mit Visual Assist X verarbeitet diesen Fall, schlägt aber immer noch komplexeren Code fehl.

2

G'day,

Als beiseite, ich würde sehr Scott Meyers ausgezeichnet "Effective STL" Buch empfehlen.

Artikel 49 "Lernen, STL-bezogene Compiler-Diagnose zu entziffern" ist den Preis der Aufnahme allein wert! Die darin enthaltenen Informationen sind auch auf das Decodieren komplexer schablonenbezogener Diagnosen über STL hinaus anwendbar, z. für Boost.

Viel Spaß.

BTW +1 für eine interessante Frage.

prost,

1

Eclipse und das CDT-Plugin wird diese wie auch die anderen Werkzeuge handhaben erwähnt

+1

Nein, tut es nicht. Ich habe es gerade überprüft. Es gibt stattdessen eine Liste von lokalen Variablen. –

+2

Sind Sie sicher, dass Sie es richtig eingerichtet haben? Funktioniert für mich – Glen

4

ich immer Eclipse C/C++ IDE verwenden haben. Es unterstützt Code-Vervollständigung auch :)

+1

Es funktioniert nicht einmal für den genannten Anwendungsfall. –

+0

Es funktioniert am besten für den genannten Anwendungsfall –

1

Visual Studio 2010 hat sich in diesem Bereich deutlich verbessert. Es gibt eine offene Beta, die du ausprobieren solltest.

+0

Verwende v22010 (Beta) seit einem Monat jetzt, und ich würde zustimmen müssen! –

0

Netbeans manchmal richtig, aber nicht immer. Es ist nicht deterministisch: scheinbar ähnlicher Code kann je nach Laune der IDE geparst werden oder nicht.

1

Dies funktioniert in Eclipse CDT, aber Sie müssen möglicherweise die Include-Pfade unter Projekt-> Eigenschaften-> C/C++ Allgemein-> Pfade und Symbole explizit festlegen. Unter meiner Umgebung. Ich musste graben und das include \ C++ \ 4.2.1 und include \ C++ \ 4.2.1 \ m68k-elf explizit hinzufügen. Wenn das angegebene Verzeichnis dem Cross-Compiler root \ include zugewiesen wurde, konnte Content Assist nicht ausgeführt werden. Erstellen Sie den Index natürlich neu, sobald Sie die Verzeichnisse hinzugefügt haben.

Möglicherweise müssen Sie Ihre Windows-> Preferenes-> C/C++ -> Indexer Cache Limit Einstellungen überprüfen und sie erhöhen, wenn sie zu klein sind. Ich habe meine auf maximal 256MB eingestellt.

Verwandte Themen