程序出现找不到C++11新特性函数的一些原因

来源:互联网 发布:js drag拖拽 编辑:程序博客网 时间:2024/06/08 15:20

   这几天写算法时,遇到了一个问题。我要用到C++的库函数move函数,但是用了该函数后编译始终报错,说std下没有move这个函数。我就纳闷了,这个函数是标准的库函数怎么会找不到呢,后来我又用到cout这个基本函数,发现又可以找到。于是我在网上查了一下原因,大多数的回答都是在编译时要加上C++11,因为有些函数是C++11后才有的。但是我在Ubuntu上的g++版本都是4.9了,Qt里面的工程里也加了C++11的,但是还是找不到move函数。

   后来冷静下来想了想,程序是用Qt编译的,会不会是qmake有问题呢,但是我的Qt安装的版本是5.8最新版,能有什么问题。但我还是看了一下工程的编译器,发现qmake的版本是qt4,这很明显是系统中自带的qt4的版本,当时安装qtcreater5.7的时候没注意更改或是什么别的原因。于是我马上把qmake的版本切换成了qt5.再次编译程序发现可以找到move函数了。


这里记录一下,当程序找不到C++的库函数时注意以下几个问题:

一:该函数是不是C++11后才有的函数,若是检查编译时有没有忘记加上C++11来编译。

二:检查自己系统的编译器,g++版本起码要在4.8以上

三:检查所用IDE的编译器,查看是否因为编译器的版本过低而找不到。

原创粉丝点击