1
我有以下代碼:C++:未用:非靜態數據成員初始化
#include <fstream>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct node{
vector<int> vic;
bool visitato = false;
};
int main(){
vector<node> grafo;
ifstream in("input.txt");
int n, m, s, from, to;
in >> n >> m >> s;
grafo.resize(n);
for (int i = 0; i < m; i++){
in >> from >> to;
grafo[from].vic.push_back(to);
}
for (int i = 0; i < grafo.size(); i++)
for(int j = 0; j < grafo[i].vic.size(); j++)
cout << "From node " << i << " to node " << grafo[i].vic[j] << endl;
}
和(在Ubuntu)我輸入以下命令:
/usr/bin/g++ -DEVAL -static -O2 -o visita visita.cpp -std=c++0x
我得到以下錯誤:
visita.cpp:10:21: sorry, unimplemented: non-static data member initializers
visita.cpp:10:21: error: ISO C++ forbids in-class initialization of non-const static member ‘visitato’
在我的家裏它工作正常,但在大學它沒有。我們的老師發佈了要執行的命令。那麼爲什麼它不在大學工作,但它在我的家呢?
不同版本克++的。你們是後來支持C++ 11的課堂初始化功能,大學一開始沒有。 – Angew 2014-11-06 13:26:26
它告訴你什麼是錯的。您所在大學的編譯器不支持C++ 11非靜態數據成員初始值設定項。 REF:visita.cpp:10:21:對不起,未實現:非靜態數據成員初始化符 – AlexanderBrevig 2014-11-06 13:26:42
通過@AlexanderBrevig添加到註釋中,'struct node'不是靜態的,所以數據成員''false'的初始化符'= false' '在您家中使用的GCC中沒有實現。使用'gcc --version'在家裏和大學都可以獲得編譯器版本。此外,使用'-std = C++ 11',因爲'-std = C++ 0x'已被棄用。 – DevSolar 2014-11-06 13:30:47