2014-11-06 2 views
1

У меня есть следующий код:C++: Unimplemented: нестатические Инициализаторы членов данных

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

У меня дома он работает нормально, но здесь, в университете, нет. Команда для выполнения была отправлена ​​нашим учителем. Тогда почему это не работает в Uni, но это происходит в моем доме?

+1

Различные версии г ++. Позднее ваш и поддерживает встроенную функцию инициализации C++ 11, в университете этого нет. – Angew

+4

Это говорит вам, что не так. Компилятор в вашем университете не поддерживает инициализаторы элементов нестатического ввода C++ 11. REF: visita.cpp: 10: 21: извините, не реализовано: инициализаторы инициализаций нестатических данных – AlexanderBrevig

+1

Добавляя к комментарию @AlexanderBrevig, 'struct node' не является статическим, поэтому инициализатор' = false' члена данных 'visitato 'не реализуется в GCC, который вы используете дома. Используйте 'gcc --version', чтобы получить версию компилятора как дома, так и в университете. Кроме того, используйте '-std = C++ 11', поскольку' -std = C++ 0x' устарел. – DevSolar

ответ

5

Нестационарные инициализаторы элементов данных, доступные с GCC 4.7. Итак, проверьте версию GCC.

2

решаемые с этим кодом:

struct node{ 
    vector<int> vic; 
    bool visitato; 
    node() : visitato(false) {}  
}; 
Смежные вопросы