2010-03-24 43 views
0

我有真實用於打印出不同字符類型一個性狀類:錯誤使用特性類:「之前‘&’令牌預期構造析構函數或類型轉換」

template <typename T> 
class traits { 
public: 
    static std::basic_ostream<T>& tout; 
}; 
template<> 
std::ostream& traits<char>::tout = std::cout; 
template<> 
std::wostream& traits<unsigned short>::tout = std::wcout; 

GCC(克++)版本3.4。 5(是有點老)拋出一個錯誤: 「之前的預期‘&’令牌構造析構函數或類型轉換」

而且我知道如果有解決這個的好辦法。

(它也生氣_O_WTEXT所以如果有人得到了一些洞察到這一點,我也將不勝感激)

+0

您正在使用哪個平臺?在非Windows平臺上,'wchar_t'絕對不是'unsigned short'的同義詞。當然,這不是對你面臨的問題有任何影響。 :-P – 2010-03-24 20:50:07

+0

啊是的 - 我實際上使用Windows機器。我知道在其他體系結構中,wchar_t可能會有更多/更少的字節。 – Mark 2010-03-24 20:50:54

+0

這不是大小。這是關於類型身份。 – 2010-03-24 20:56:38

回答

1

wchar_t是不同的類型unsigned short。您必須使用

template<> 
std::wostream& traits<wchar_t>::tout = std::wcout; 

即使它們可能使用相同的表示形式,它們也是無用的不同的整數類型。很像三個char,signed charunsigned char

另外請確保您包含正確的標題(<ostream>或包括<iostream>)。

相關問題