'default argument' : 无法从'const char [1]'转换为'const wchar_t *'
'default argument' : cannot convert from 'const char [1]' to 'const wchar_t *'
我正在尝试编译一些我在网上找到的旧游戏SRC这是代码
bool LoadFromINI(std::wstring const& strINIFileName = _T("./Local.ini"), char const* szDefaultLocale = "");
bool LoadFromINB(std::wstring const& strINBFileName, wchar_t const* szDefaultLocale = _T(""));
C:......CodeCel_Convert_SourceCosmosincludeBM/LocalMgr.h(60): error C2440: 'default argument' : cannot convert from 'const char [1]' to 'const wchar_t *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>C:......CodeCel_Convert_SourceCosmosincludeBM/LocalMgr.h(60): error C2548: 'LOCAL_MGR::CLocal::LoadFromINB' : missing default parameter for parameter 2
1>C:......CodeCel_Convert_SourceCosmosincludeBM/LocalMgr.h(59): error C2440: 'default argument' : cannot convert from 'const char [12]' to 'const std::wstring &'
1> Reason: cannot convert from 'const char [12]' to 'const std::wstring'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1>C:......CodeCel_Convert_SourceCosmosincludeBM/LocalMgr.h(103): fatal error C1903: unable to recover from previous error(s); stopping compilation
又一个错误:代码:
输出:_tcscpy_s(m_kDBName,30, (wchar_t const*)in_strDBName);
'errno_t strcpy_s(char *,rsize_t,const char *)':无法将参数3从'const wchar_t *'转换为'const char *'1>所指向的类型不相关;转换需要reinterpret_cast、c风格强制转换或函数风格强制转换
将_T("blah")
改为L"blah"
_T
为宏,不做任何操作或添加L
。
或者,对_T
和TCHAR
使用wchar选项编译项目
只有当您的项目使用定义的UNICODE
预处理器符号进行编译时,_T("str")
才扩展为L"str"
。在你的情况下,它似乎不是,所以_T()
什么也不做。将函数声明更改为
bool LoadFromINI(std::wstring const& strINIFileName = L"./Local.ini", wchar_t const* szDefaultLocale = "");
bool LoadFromINB(std::wstring const& strINBFileName, wchar_t const* szDefaultLocale = L"");
或者如果你真的,真的必须支持_T()
和TCHAR
的东西,把它们改成
bool LoadFromINI(std::basic_string<TCHAR> const& strINIFileName = _T("./Local.ini"), TCHAR const* szDefaultLocale = "");
bool LoadFromINB(std::basic_string<TCHAR> const& strINBFileName, TCHAR const* szDefaultLocale = _T(""));
现在第一个参数将是std::string
或std::wstring
取决于是否定义了UNICODE
相关文章:
- 将 const 转换为 const char* 无效,我该如何解决?使用 gcc7 时失败
- "class<T>"到"class<const T>"转换运算符的惯用方法
- 编译器可以静默地从 const 转换为 const 和,反之亦然吗?
- 从 Object<const T> 转换为 Object<t>
- 为什么在设置类成员时会自动从 const 转换为 non-const 并发生?
- 同时向下投递并从 const 转换为非 const
- 没有匹配的操作数[template]/无法从Type const*转换为Type
- static const转换为c++共享库中的对象.是进程间共享的吗?
- 无法从 *const 转换为 &in += 运算符
- C2664 无法在 Qt C++ 中将参数 1 从用户 *const 转换为用户
- const转换操作符
- std::pair中的Const转换
- const转换为非const或非const转换为const
- C++11:无法将参数从'T *const'转换为'T *&&'
- Const转换std容器
- 复制构造函数将const转换为非const
- 在c++中将非const转换为const
- 无法将参数 1 从 'PrintVisitor *const ' 转换为 'Visirot &'
- 将const T* const转换为T*
- 操作符情况下的c++ const转换