我emplace_back
在 Visual Studio 的 cpp 项目中使用函数,它工作正常。Visual Studio 显示了以下定义:
void std::vector<std::string>::emplace_back<CHAR(&)[1]>(CHAR(&_Val)[1])
然后,我将把我的 cpp 项目文件移动到 MFC 项目中,并在基于对话框的应用程序中使用它们。当我将代码移至 MFC 项目时,emplace_back
定义已更改为:
void std::vector<std::string>::emplace_back<WCHAR(&)[1]>(WCHAR(&_Val)[1])
并在构建后导致C2664
xmemory0 中的错误:
Error C2664
std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(const std::basic_string<char, std::char_traits<char>, std::allocator<char>> &)':
cannot convert argument 1 from 'WCHAR [1]' to 'std::initializer_list<_Elem>'
在输出中它说:
note: see reference to function template instantiation 'void std::vector<std::string,std::allocator<_Ty>>::emplace_back<WCHAR(&)[1]>(WCHAR (&)[1])' being compiled
1> with
1> [
1> _Ty=std::string
1> ]
我该如何处理这些问题?Visual Studio Project 的属性中是否有任何选项可以更正?
谢谢