与模板类转换运算符
问题描述:
我想重载转换运算符, 我有下面的代码:与模板类转换运算符
template <typename _T>
class CTest
{
public :
_T data;
CTest(_T _data) : data(_data) {}
~CTest() {}
operator _T(){ return data; }
};
与微软的Visual Studio 2005中,给我下面的错误:
警告C4003:宏'T' 警告C4003:没有足够的实际参数警告C4003:宏' _T' 错误没有足够的实际参数错误C2833:'操作员L'不是公认的操作员或类型 请参阅参考类模板实例化'CTest < _T>'正在编译 错误C2059:语法错误:'newline' 错误C2334:意外的令牌在s之前'{';跳过表观功能体 错误C2833:“运算符L”是不是一个认可运营商或类型
如何可以声明操作者_T()正确?
答
_T
是WINAPI宏(参见Generic-Text Mappings in Tchar.h或Should I use _T or _TEXT on C++ string literals?):改变_T
到T
。
带前导下划线的名称保留用于实现。你偶然发现了一个。只要删除下划线,它会编译。 – jrok
特别是首字母下划线后跟大写字母。 –