2012-06-22 15 views
6

this postの手順に従って、Eclipse(Indigo)がunique_ptr(およびその他のC++ 11の新しいもの)を認識できるように管理しました。問題は、unique_ptroperator->がEclipseでサポートされていないようです。エラーと自動補完作品はありません。期待どおりに動作1Eclipseでunique_ptrの参照演算子が機能しない

class Foo { void bar() { /* ... */ } }; 

std::unique_ptr<Foo> foo; 
(*foo).bar(); // 1 
foo->bar(); // 2 

ケース:ここでは、例を持っています。しかし、2の場合、Eclipseはステートメントにエラー( "メソッド 'バー'を解決できませんでした)をマークし、さらにオートコンプリートをfoo->からは機能しません。

最も興味深いことに、std::shared_ptrに問題はありません。 std::unique_ptrの場合にのみ発生します。

誰も同じ問題を経験しましたか?誰もそれを修正する方法を知っていますか?

編集:上記のコードスニペットでは、コンパイルのプロセスがうまくいきます。したがって、問題はコンパイラー自体ではなく、Eclipse上にあります。

+0

@dirk:IDEでの自動補完と静的なlint-pickingに関する質問です。コンパイルの問題についての言及はありません。 – Rook

+0

@dirkgently g ++ 4.6を使用しているので、コンパイルはうまくいきます。この問題はEclipseにのみ影響します。 – betabandido

+0

@Rock:右。私はそのビットを見逃した。 – dirkgently

答えて

0

私は最終的に私が苦しんでいるのと同じ問題を記述するCDTにbug reportを見つけました。これまでのところ、問題の本当の修正はありませんが、回避策はあり、そのバグレポートで説明:

はい、GCC 4.5は、そのライブラリのヘッダー正確 CDTによってインデックスを付けることができ、最新のGCCのバージョンです。 4.6ヘッダーの索引作成に失敗した主な理由は、CDTのヘッダーにある4.ヘッダーで広範囲に使用されている 'constexpr'と 'nullptr'のサポートがないことです(ちなみにJuno用に実装される可能性はありますか?

私が(にコンパイラー呼び出し コマンドを設定することにより、「G ++ - 4.5」を検出オプションで)私の システムにインストールされているGCC 4.5と4.6の両方を有する、および4.5のヘッダにCDTを指し示すことによって、これを回避してきました

実際ながら、 4.6でコンパイルします。

0

この問題は、cdt 8.1.1で最近修正されました。 help->アップデートを確認してください。ダウンロードされインストールされます。私はunique_ptrをテストしており、適切に索引付けされています。