错误C2440:“返回”:无法从“ char * const”转换为“ LPCTSTR”

时间:2019-03-10 06:13:54

标签: visual-c++

struct StaticString
{
	StaticString()	{	Str = NULL;	}
	~StaticString()	{	if(Str) delete [] Str;	Str=0; }

	char* Str;

	void operator = (const char * pchar)
	{
		Str = new char[strlen(pchar)+1];
		strcpy(Str,pchar);
	}
	operator LPCTSTR() const
	{
		return Str;
	}
	operator PCHAR() const
	{
		return Str;
	}
	
};

错误C2440:“返回”:无法从“ char * const”转换为“ LPCTSTR”

来自游戏。我该如何解决?我在谷歌搜索,但没有人工作

1 个答案:

答案 0 :(得分:0)

LPCTSTR是“指向常量TCHAR字符串的长指针”。

TCHAR类型很古老。它可以追溯到Windows 98 / NT从“ ANSI”到“宽字符” Unicode的原始过渡。

#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif

这几天大多数项目默认为_UNICODE,这意味着TCHAR不是char,而是wchar_t

请参见What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?

通常,您应该避免使用这些Windows可移植类型,并坚持使用C ++标准类型。