2009-06-04 11 views
0

Linuxのウィンドウからプログラムを移行するときに、C++の標準テンプレートライブラリを使用して問題が発生しました。私は、テンプレートをtypedefをしようとしていると私は、この行g ++を使用した標準テンプレートライブラリ

のtypedefのstd ::リスト<のstd ::ペア< int型、ダブル>> PairListに< 'トークン「の前に期待される初期化子」というエラーを取得しています。

これはmvC++を使用し、g ++を使用しないと、どうやって修正できるのか、

答えて

2

これは#についてのものだと思います。

次のコードは本当に最低限の作品は、Linux

#include <utility> 
#include <list> 

typedef std::list< std::pair< int,double> > PairList; 

PairList x; 
+0

なぜMSVC++で動作しているのかについては、あらかじめコンパイルされたヘッダーの問題が考えられます。 – Jherico

+0

ヘッダーを追加するとうまくいきました。皆さんありがとう – DHamrick

0

#include <utility>pairでしたか?

0

上のG ++と完全にここにコンパイル私はG ++のコードで問題はなかった、と一般的にそのSTLのサポートは見事であることがわかってきました。すべての#includeディレクティブがありますか?ときには、それらはプラットフォーム(プラットフォームではない場合でも)によって異なります。

1

標準インクルードファイルについて覚えておかなければならないことは、それらが許可されていてもお互いを呼び出す必要がないことです。 (あなたが混乱してはならない名前空間stdを使用するので、名前空間を潜在的に汚染しているようではありません。)

MSVC++には、これはg ++ヘッダーのケースではありません。したがって、プログラムはMSVC++でコンパイルされ、g ++ではコンパイルされず、ソースに必須のヘッダーがありません。

実際に必要なヘッダーがすべて含まれていることを確認してください。

関連する問題