質問

テンプレートに関して C++ のエラー メッセージがかなりひどいと言われる人々が何を意味するのか、私は本当に理解し始めています。プロトタイプと一致しない関数のような単純なもので、恐ろしく長いエラーが発生するのを見たことがあります。

これらのエラーを解読するためのコツはありますか?

編集:私は gcc と MSVC の両方を使用しています。どちらもかなりひどいようです。

役に立ちましたか?

解決

状況をより健全にするために、次のツールを試すことができます。

http://www.bdsoft.com/tools/stlfilt.html

他のヒント

絶対に無理だと思います。小さなエラーが爆発して、何ページも読み取れないジャンクなページになってしまいます。通常、早朝、コーヒーの前に。:(

私の唯一のアドバイスは、深呼吸して先頭から始めて、重要な情報を解析してみることです。(もちろん、言うは易く行うは難しですよね?)

として @ンサンダース 言った STLFilt 良い解決策です。自家製の STLFilt (Perl をインストールする手間を省きたい場合) は、エディターでエラー メッセージをコピーし、(より) 管理しやすくなるまでエラーの一部を置き換え始めます。

例えば

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 

それほどマニアックではない用語で言うと、これは次のことを意味します。

交換する:

std::basic_string<char,std::char_traits<char>,std::allocator<char>>

と:

string

一部のコンパイラは、他のコンパイラよりも優れたメッセージを生成します。どのようなコンパイラを使用していますか?そうは言っても、それらはすべてかなり悪いです。C++0X はこの問題のほとんどを解決します (「 概念) しかし、この標準は 2009 年までリリースされず、広範なサポートはおそらくそれよりもさらに遅れるでしょう :-(

少なくとも Visual Studio では、エラー リストではなく [出力ビルド] ウィンドウに多くの情報が表示されます。エラー リスト状態で、「Foo<int> を Foo<int> に変換できません」というテンプレート エラーが発生しました。[出力] ウィンドウの実際のエラーの後にいくつかの行があり、実際の問題が何であるかを解読するのに役立ちました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top