以下代码在Visual Studio 2010中编译,但无法在Visual Studio 2012 RC中编译.
#include <string>
// Windows stuffs
typedef __nullterminated const wchar_t *LPCWSTR;
class CTestObj {
public:
CTestObj() {m_tmp = L"default";};
operator LPCWSTR() { return m_tmp.c_str(); } // returns const wchar_t*
operator std::wstring() const { return m_tmp; } // returns std::wstring
protected:
std::wstring m_tmp;
};
int _tmain(int argc, _TCHAR* argv[])
{
CTestObj x;
std::wstring strval = (std::wstring) x;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
返回的错误是:
错误C2440:'type cast':无法转换
'CTestObj'为'std::wstring'
No构造函数可以采用源类型,或构造函数重载解析不明确
我已经意识到,注释掉任何转换运算符都会修复编译问题.我只想了解:
c++ visual-studio-2010 wstring visual-c++ visual-studio-2012