#include <iostream>
#include <string>
using namespace std;
string buff, resultstr, userstr;
string convert(const string& userstr)
{
buff = userstr.front();
resultstr = userstr;
resultstr.front() = '_';
resultstr = resultstr + buff + "ay";
return resultstr;
}
这是我的代码,我使用QT Creator 3.1.0和GCC 4.9.0作为编译器,这给了我:
in function 'std::string convert(const string& userstr)':
'const string' has no member named 'front'
'std::string' has no member named 'front'
我用Google搜索并在older question中发现如果您的编译器不支持C ++ 11会发生这种情况,但GCC应该支持自4.8以来。难道我做错了什么?我是C ++的新手,所以我不会感到惊讶。
注意:我跳过了“main”函数,因为它仅用于加载QT GUI。
答案 0 :(得分:5)
要使gcc
和其他编译器在C ++ 11模式下工作,您应该将CONFIG += c++11
添加到.pro文件中。然后std::string
将有一名成员.front
。这比将-std=c++11
添加到QMAKE_CXXFLAGS
更好,因为它可以与Qt(Visual Studio,Sun Studio等)支持的任何编译器一起使用。这样做的缺点是你需要Qt 5或更高版本的qmake
。然后,qmake
将从您的编译器mkspec
(QMAKE_CXXFLAGS_CXX11
)中读取所需的标记,并将其附加到QMAKE_CXXFLAGS
。