7

この投稿の手順に従った後、Eclipse (Indigo) を認識させることができましたunique_ptr(およびその他の C++11 の新機能)。問題は、operator->forunique_ptrが Eclipse でサポートされていないように見えることです。ここに例があります:

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

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

ケース1は期待どおりに機能します。エラーはなく、オートコンプリートが機能します。ただし、ケース2の場合、Eclipse はステートメントにエラー (「メソッド 'bar' を解決できませんでした」) をマークし、さらに からのオートコンプリートはfoo->機能しません。

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

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

編集:目的を明確にするために、上記のコード スニペットのコンパイル プロセスは正常に行われます。したがって、問題はコンパイラ自体ではなく、Eclipse にあります。

4

2 に答える 2

1

CDT で、私が苦しんでいるのとまったく同じ問題を説明しているバグ レポートをようやく見つけました。これまでのところ、この問題に対する実際の修正はありませんが、そのバグ レポートで説明されている回避策があります。

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

GCC 4.5 と 4.6 の両方をシステムにインストールし、CDT を 4.5 のヘッダーにポイントする (検出オプションでコンパイラ呼び出しコマンドを「g++-4.5」に設定する) ことで、実際に 4.6 でコンパイルすることで、この問題を回避しました。

于 2012-06-24T18:59:24.117 に答える
0

この問題は最近、cdt 8.1.1 で修正されました。help- >check for updatesに移動するだけで、ダウンロードされてインストールされます。unique_ptr をテストしましたが、適切にインデックスが作成されています。

于 2012-10-01T12:41:36.747 に答える