從linux中的窗口遷移程序時,我遇到了使用C++標準模板庫的問題。我試圖typedef一個模板,我得到錯誤'預期的初始值設定項'<'在此行上使用g ++的標準模板庫
typedef std :: list < std :: pair < int,double >> PairList;
任何想法,爲什麼這將工作使用mvC++,而不是使用g ++,我該如何解決它?
從linux中的窗口遷移程序時,我遇到了使用C++標準模板庫的問題。我試圖typedef一個模板,我得到錯誤'預期的初始值設定項'<'在此行上使用g ++的標準模板庫
typedef std :: list < std :: pair < int,double >> PairList;
任何想法,爲什麼這將工作使用mvC++,而不是使用g ++,我該如何解決它?
我認爲這是關於#includes。
下真的最小的代碼完全在這裏與G ++在Linux上
#include <utility>
#include <list>
typedef std::list< std::pair< int,double> > PairList;
PairList x;
您是否#include <utility>
對於pair
?
編譯我曾與在G ++代碼沒有問題,一般發現了它的STL支持精湛。你有所有#include
指令嗎?有時候,這些平臺不同(即使不應該)。
標準包含文件需要記住的一件事是它們被允許但不需要互相調用。 (這不像他們可能會污染命名空間,因爲它們都使用命名空間標準,你不應該混淆。)
有可能在MSVC++中包含或反之亦然,但是在g ++頭文件中並不是這種情況。因此,程序可能會在MSVC++中編譯,而不是在g ++中編譯,在源文件中缺少所需的頭文件。
確保您的所有標題都包含在內,您應該沒問題。
至於爲什麼它在MSVC++工作,我懷疑它的預編譯頭問題。 – Jherico 2009-06-04 18:53:21