2017-03-25 5 views
1

を解決できませんでしたのEclipse、C++メソッドstrが()からデフォルトのSTR()の例を使用して

str()

に私は、Eclipse

とフラグとの未確認の使用グローバルプロバイダーで上CDT GCC Built-in Compiler Settingsを持っています

"${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}" 

また、ツールチェーンを前後に変更してみましたが、運がうまくいきませんでした。

+0

チャック次のリンク:http://stackoverflow.com/questions/7905025/string-could-not-resolved-er-c-eclipse-cant-resolve-stan –

+0

私はビジュアルスタジオ2013に同じコードがあり、うまくいきます。 – Weaboo

+2

@AhsanMustafaそれは、構文やコードのエラーよりEclipse IDEのエラーのように見える –

答えて

0

問題は、g ++ヘッダーファイルの構造によって何らかの原因で発生します。ヘッダ<sstream>には、「基本」テンプレートクラスのみが定義されています。 str()メソッドを呼び出すと、私はostringstreamと同じエラーが発生しました。 コード内の変数の型をstd::basic_ostringstream<char>に変更したところ、エラーはなくなりました。また、自動補完が再び働いた(以前はうまくいかなかった。これは、日食スキャナーが何らかの問題を抱えているという良い兆候である)。もちろん、これは実際の良い解決策ではありません。なぜなら、basic_ *型を使用しているからです。しかし、(無害な)エラーを取り除くのは1つです。 ostringstreamのような「公式」タイプのtypedefは、ヘッダ<iosfwd>で前方宣言されています。私は、標準の後に私のコードで(グローバル名前空間内)のtypedefが含ま ファイルが含ま:

typedef std::basic_ostringstream<char> ostringstream; 

をして、このタイプの代わりにstd::ostringstreamostringstreamを使用し、エラーも消えます。だから問題は、標準ヘッダーファイル<iosfwd>の前方宣言によって引き起こされます(これは、これらのヘッダーが間違っていることを意味するものではなく、単にEclipseスキャナがこれによって困惑しているということです)。

私はg ++(Ubuntu 5.4.0-6ubuntu1〜16.04.5)5.4.0 20160609 btwを使用しています。

関連する問題