我有以下代码:
#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’
在我家,它很好用,但在大学里就不行了。我们的老师已经下达了要执行的命令。那为什么它在大学不起作用,但在我家却起作用呢?
GCC 4.7之后提供的非静态数据成员初始值设定项。因此,请检查您的GCC版本。
使用以下代码解决:
struct node{
vector<int> vic;
bool visitato;
node() : visitato(false) {}
};