2013-07-03 116 views
2

我是新手,所以请原谅我,如果这真的很愚蠢。qt linux“QMAKE_CXXFLAGS + = -std = C++ 11”等效于windows?

最近我做了一个在Ubuntu下使用qt的项目,我用静态链接的“QMAKE_CXXFLAGS + = -std = C++ 11”,一切都很顺利,所以我想为什么不重新编译它在Windows上,我做到了。

这是node.h

#ifndef NODE_H 
#define NODE_H 
#include <iostream> 
#include <string> 
#include "qcustomplot.h" 
using namespace std; 
class node 
{ 
public: 
double p[6]; 
string table[3000][9]; 

double splitPoints[8]; 
double giniA[8];//array of ginies obtained by partitioning on corresponding attributes 
double gini;//gini of a dataset 
int rowc=0;//row count 
int colc=0; 
int cc; 
std::string label; 
string a[9]; 
node* left=NULL; 
node* right=NULL; 
void plotGraph(QCustomPlot *customPlot); 
int optimize(int); 


}; 

#endif // NODE_H 

当我运行项目中,我得到了以下错误消息:

In file included from ..\mining app final(hopefully)\/mythread.h:4, 
      from ..\mining app final(hopefully)\/mainwindow.h:8, 
      from ..\mining app final(hopefully)\main.cpp:2: 
    ..\mining app final(hopefully)\/node.h:16: error: ISO C++ forbids initialization of member 'rowc' 
    ..\mining app final(hopefully)\/node.h:16: error: making 'rowc' static 
    ..\mining app final(hopefully)\/node.h:16: error: ISO C++ forbids in-class initialization of non-const static member 'rowc' 
    ..\mining app final(hopefully)\/node.h:17: error: ISO C++ forbids initialization of member 'colc' 
    ..\mining app final(hopefully)\/node.h:17: error: making 'colc' static 
    ..\mining app final(hopefully)\/node.h:17: error: ISO C++ forbids in-class initialization of non-const static member 'colc' 
    ..\mining app final(hopefully)\/node.h:21: error: ISO C++ forbids initialization of member 'left' 
    ..\mining app final(hopefully)\/node.h:21: error: making 'left' static 
    ..\mining app final(hopefully)\/node.h:21: error: invalid in-class initialization of static data member of non-integral type 'node*' 
    ..\mining app final(hopefully)\/node.h:22: error: ISO C++ forbids initialization of member 'right' 
    ..\mining app final(hopefully)\/node.h:22: error: making 'right' static 
    ..\mining app final(hopefully)\/node.h:22: error: invalid in-class initialization of   static data member of non-integral type 'node*' 
    mingw32-make[1]: Leaving directory `C:/build-blah-vai-Debug' 
    mingw32-make[1]: *** [debug/main.o] Error 1 
    mingw32-make: *** [debug] Error 2 
    01:36:17: The process "C:\MinGw\bin\mingw32-make.exe" exited with code 2. 
    Error while building/deploying project blah (kit: vai) 
    When executing step 'Make' 
    01:36:17: Elapsed time: 00:02. 

任何人都可以请指导我如何解决这个问题?

我目前正在Qt的4.8.5-MinGW的(Windows 7)中

+0

你应该在构造函数初始化成员变量。只有静态变量可以在类之外初始化。 –

+0

嘿,谢谢你的回复vaibhav。 –

+0

@VaibhavDesai这是[在C++ 11中不正确](http://www.stroustrup.com/C++11FAQ.html#member-init)。你确定正确的标志传递给编译器吗? – peppe

回答

0

那么为了避免使用任何C++ 11的功能,我写了自己的“to_string()”和“to_Double()”函数并使用它们,现在它就像一个魅力!

这里的功能是:

字符串的ToString(双)

string toString(double num) 
{ 
std::stringstream ss; 

ss << num; 
std::string s(ss.str()); 

return s; 
} 

双toDouble(串)

double toDouble(string s) 
{ 
    int i,j; 
    double p=0; 

    for(i=s.size()-1;(s[i]!='.')&&(i>=0);i--) 
    { 
    p+=1.0; 
    } 

    if(s[i]!='.') 
    p=0; 

    else 
    { 
    for(j=i;j<s.size();j++) 
    s[j]=s[j+1]; 
    } 
    istringstream myStream(s); 
    unsigned int uintVar = 0; 

    myStream >> uintVar; 

    return (uintVar/(double)(pow(10.0,p))); 
} 
0

对于我的Qt项目在Windows上我用 “QMAKE_CXXFLAGS + = -std =的C++ 0x” 为新标准的特点。 MinGW 4.8(支持许多C++ 11功能),你可以下载here

+0

中的Qt 5.1我已经试过了,导致[this](http://stackoverflow.com/questions/5003543/c0x-with-qt-creator) –