使用模板类的Cast运算符

时间:2012-06-14 20:24:22

标签: c++ templates visual-studio-2005

我想重载一个强制转换操作符, 我有以下代码:

template <typename _T>
class CTest
{
public :
    _T data;

    CTest(_T _data) : data(_data) {}
    ~CTest() {}

    operator _T(){ return data; }
};

和MS Visual Studio 2005一样,给我以下错误:

  

警告C4003:宏' T'的实际参数不够   警告C4003:宏' _T'的实际参数不够   错误C2833:'运算符L'不是可识别的运算符或类型   请参阅类模板实例化'CTest&lt; _T&gt;'被编译   错误C2059:语法错误:'newline'   错误C2334:'{'之前的意外标记;跳过明显的功能体   错误C2833:'运算符L'不是可识别的运算符或类型

如何正确声明 operator _T()

1 个答案:

答案 0 :(得分:5)

_T是一个WINAPI宏(请参阅Generic-Text Mappings in Tchar.hShould I use _T or _TEXT on C++ string literals?):将_T更改为T