2009-09-01 33 views
0

我想編譯第二生命庫的一小部分。具體而言,它是公共部分。我用VS9在Windows系統中編譯它。我失敗了,編譯器說,它無法識別「_Ios_Openmode」爲「性病」的成員C++第二生命庫的編譯錯誤

相應的代碼如下:

explicit llifstream(const std::string& _Filename, std::_Ios_Openmode _Mode = in) 
    : std::ifstream(_Filename.c_str(), _Mode) 
{  
} 

誰能幫我找出是什麼問題,我應該改變我的編譯器配置或其他東西?

回答

2

我認爲它的意思是std::ios::openmode

+0

真的嗎?但代碼是由林登實驗室編寫的。我認爲它有效。修改原始代碼是否好? – 2009-09-01 09:22:16

+1

也許它意味着標準C++庫的不同實現。 Linden實驗室編寫的代碼並不能免除怪異;-)我不知道修改代碼是否是一個好主意,但是如果你想讓它工作並且沒有其他方法,那爲什麼不呢? ;-)也許你可以通過把'namespace std {typedef ios :: openmode _Ios_Openmode; }而不是;-)如果它更好,懷疑。無論如何,你需要確認它首先解決問題。 – 2009-09-01 09:28:32

+0

是的,雖然sbi沒有提及解決方案,但他將其稱爲bug是非常有效的。 – 2009-09-01 09:29:45

1

_Ios_Openmode似乎是一些std lib實現的內部類型(該風格看起來像Dinkumware對我來說,但我不確定)不應該在該實現之外使用。如果它在別的地方使用,這是一個錯誤,簡單明瞭。

如果你可以fix this yourself,那麼盡一切辦法,但你應該向他們報告一個錯誤。