2009-06-04 43 views
0

從linux中的窗口遷移程序時,我遇到了使用C++標準模板庫的問題。我試圖typedef一個模板,我得到錯誤'預期的初始值設定項'<'在此行上使用g ++的標準模板庫

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

任何想法,爲什麼這將工作使用mvC++,而不是使用g ++,我該如何解決它?

回答

2

我認爲這是關於#includes。

下真的最小的代碼完全在這裏與G ++在Linux上

#include <utility> 
#include <list> 

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

PairList x; 
+0

至於爲什麼它在MSVC++工作,我懷疑它的預編譯頭問題。 – Jherico 2009-06-04 18:53:21

0

您是否#include <utility>對於pair

0

編譯我曾與在G ++代碼沒有問題,一般發現了它的STL支持精湛。你有所有#include指令嗎?有時候,這些平臺不同(即使不應該)。

1

標準包含文件需要記住的一件事是它們被允許但不需要互相調用。 (這不像他們可能會污染命名空間,因爲它們都使用命名空間標準,你不應該混淆。)

有可能在MSVC++中包含或反之亦然,但是在g ++頭文件中並不是這種情況。因此,程序可能會在MSVC++中編譯,而不是在g ++中編譯,在源文件中缺少所需的頭文件。

確保您的所有標題都包含在內,您應該沒問題。