使用traits类时出错:“在'&'之前预期的构造函数析构函数或类型转换令牌”

时间:2010-03-24 20:46:57

标签: c++ stl traits

我有一个traits类,用于打印不同的字符类型:

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(g ++)版本3.4.5(有点旧)抛出一个错误: “预期构造函数析构函数或'&amp;'之前的类型转换标记“

我想知道是否有一个很好的解决方法。

(它也对_O_WTEXT感到愤怒,所以如果有人对此有所了解,我也会很感激)

1 个答案:

答案 0 :(得分:1)

wchar_tunsigned short的类型不同。你必须使用

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

尽管它们可能使用相同的表示,但它们仍然是不同的整数类型。与charsigned charunsigned char中的三个非常相似。

还要确保包含正确的标题(<ostream>或包含<iostream>)。