【问题标题】:error C2440: 'return' : cannot convert from 'char *const ' to 'LPCTSTR'错误 C2440:'return':无法从 'char *const' 转换为 'LPCTSTR'
【发布时间】:2019-03-10 06:13:54
【问题描述】:

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:'return':无法从 'char *const' 转换为 'LPCTSTR'

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

【问题讨论】:

标签: visual-c++


【解决方案1】:

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++ 标准类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多