C ++:未实现:非静态数据成员初始值设定项

时间:2014-11-06 13:25:04

标签: c++ struct compiler-errors non-static

我有以下代码:

#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’

在我的家里它工作正常,但在大学这里没有。要执行的命令已由我们的老师发布。那么为什么它不能在大学里工作呢,但它在我家里呢?

2 个答案:

答案 0 :(得分:5)

GCC 4.7以来可用的非静态数据成员初始值设定项。所以,检查你的GCC版本。

答案 1 :(得分:2)

解决了这段代码:

struct node{
    vector<int> vic;
    bool visitato;
    node() : visitato(false) {}    
};