2013-04-21 50 views
2

我試着做到以下幾點:C++傳遞一個wstringstream到另一個功能

wstring wStringStreamToWString(wstringstream uStream) 
{ 
    wstring s(uStream.str()); 
    return s; 
} 

這使我的編譯器錯誤

"C2248 std::basic_ios>_Elem,_Traits>::basic_ios: No access to private members whose declaration was done in std::basic_ios<_Elmen,_Trais>- class." 

但是,如果我不這樣做在一個單獨的功能呢,它工作正常。 所以我想我只是在將wstringstream傳遞給函數時犯了一個錯誤,但我看不到它。

任何人都可以幫忙嗎?

謝謝。

+0

這實際上是爲我編譯 - http://ideone.com/3w04Mq#view_edit_box – 0x499602D2 2013-04-21 14:21:22

+0

你使用的是什麼編譯器? – Xymostech 2013-04-21 14:21:56

+0

clang,g ++和vs2010都接受這個。 – 2013-04-21 14:26:10

回答

4

通過引用傳遞的參數(const,因爲它不被修改),爲流是不可拷貝:

wstring wStringStreamToWString(wstringstream const& uStream) 
{ 
    wstring s(uStream.str()); 
    return s; 
} 

雖然功能,因爲它代表,似乎完全不必要的。

+0

+1,特別是對於提升'const'的好處,我沒有在我的評論中考慮。尼斯。 – WhozCraig 2013-04-21 14:34:17

相關問題