Visual Studio提示std没有成员move(std::move)的报错原因是什么
报错触发原因
- 缺失必要头文件:
std::move定义在C++标准库的<utility>头文件中,你当前的代码未引入该头文件,编译器无法识别std::move符号,因此抛出「std没有成员move」的错误。部分其他标准库头文件可能会间接引入<utility>,但依赖间接引入属于不规范写法,不同编译器、不同版本的实现逻辑不同,很容易出现兼容问题。 - C语言标准配置过低:
std::move是C11版本新增的特性,如果你当前的VS2019项目配置的语言标准低于C++11,也会触发该报错。
修复步骤
- 在
Main.cpp的头部添加<utility>头文件引用,修改后的代码如下:
#include <utility> #include "Integer.h" int main() { //1st object made Integer i1(5); Integer i2(std::move(i1)); return 0; }
- 确认项目语言标准配置符合要求:
- 右键点击解决方案资源管理器中的项目名称,选择「属性」
- 依次展开「配置属性」→「C/C++」→「语言」
- 将「C语言标准」选项设置为 *ISO C11 标准(/std:c11)* 及以上版本,可根据需求选择C17、C++20等更高版本获得更完善的标准库支持。
内容的提问来源于stack exchange,提问作者kriti
相关产品推荐
相关产品推荐

