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 (g++) 3.4.5 版(是的有点旧)抛出一个错误:“expected constructor destructor or type conversion before '&' token”

我想知道是否有解决这个问题的好方法。

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

4

1 回答 1

1

wchar_t是与 不同的类型unsigned short。你必须使用

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

即使它们可能使用相同的表示,它们仍然是不同的整数类型。很像char,signed char和的三个unsigned char

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

于 2010-03-24T20:54:38.660 回答