2014-05-03 74 views
1
#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作为编译器,这给了我:'的std :: string' 没有成员命名前

in function 'std::string convert(const string& userstr)': 
'const string' has no member named 'front' 
'std::string' has no member named 'front' 

我搜索了一下,发现在older question这里,如果你的编译器不支持C++ 11,会发生这种情况,但是GCC应该支持4.8以后的版本。难道我做错了什么?我是C++的新手,所以我不会感到惊讶。

注意:我跳过了“main”函数,因为它只用于加载QT GUI。

+9

“海湾合作委员会应该支持” - 但只有当你告诉它。你是否在编译器参数中指定了'-std = C++ 11'? –

+0

我没有,也不太清楚怎么做。 – Cestarian

+0

明白了!我必须在我的.pro(qt项目)文件中添加“QMAKE_CXXFLAGS + = -std = C++ 11”:)谢谢! – Cestarian

回答

5

要使gcc和其他编译器以C++ 11模式工作,您应该将CONFIG += c++11添加到.pro文件。然后std::string将有一个成员.front。它比添加-std=c++11QMAKE_CXXFLAGS要好,因为它可以与Qt支持的任何编译器一起工作(Visual Studio,Sun Studio等)。缺点是你需要Qt 5或更高版本的qmake。然后qmake将从您的编译器mkspecQMAKE_CXXFLAGS_CXX11)中读取所需的标志并将其附加到QMAKE_CXXFLAGS

相关问题