2016-12-07 4 views
0

этот код читает данные из файла, и я хочу его сохранить, в 2d динамический массив объектов типа class graph , когда я пытаюсь проверить содержимое массива g объектов пустым ... пожалуйста, помогите мне сохранить данные в массиве.C++ 2d динамический массив объектов

class graph 
{ 
public: 
    int index; 
    int c; 
    int p1; 
    int p2; 
    int s1; 
    int s2; 
    int t1; 
    int t2; 
    int weight; 
    bool ready; 
    graph(int index,int c, int p1, int p2, int s1, int s2,int t1, int t2, int weight,int ready) 
    { 
     index = index; 
     c = c; 
     p1 = p1; 
     p2 = p2; 
     s1 = s1; 
     s2 = s2; 
     t1 = t1; 
     t2 = t2; 
     weight = weight; 
     ready = ready; 
    } 

}; 

это основной код

int main(){  char argc[20]; int m,index,c,p1,p2,s1,s2,t1,t2,weight,ready; //graph temp(0,0,0,0,0,0,0,0,0,0); fstream f; 

    cout << "Input file name: "; cin >> argc;  f.open(argc, ios::in); f >> m; 

    graph **g=new graph*[m];  int i = 1; while (!f.eof()) { 

     f >> index >> c >> p1 >> p2 >> s1 >> s2 >> t1 >> t2 >> weight >> ready;   g[i] = new graph(index, c, p1, p2, s1, s2, t1, t2, weight, ready); 
      cout<< g[i]->index; 
      i = i + 1; 

      } return 0; } 
+0

Скомпилирует ли это без ошибок? Я понимаю, что параметры метода должны иметь разные имена, чем члены класса (чтобы не было необходимости использовать синтаксис 'this->'). –

+0

Я настоятельно рекомендую переформатировать вашу функцию 'main'. Хотя компилятору все равно, любой, кто хочет помочь вам, позаботится. –

+0

Сделайте свою жизнь проще, используйте 'std :: vector' вместо динамического массива. –

ответ

0

Ваша проблема инициализации объекта, упрощена:

class graph 
{ 
    public: 
     int index; 
     graph(int index) 
     { 
     index = index; 
     } 
}; 

В приведенном выше упрощенном случае линия

  index = index; 

не делать что-нибудь полезное , Это самостоятельное назначение. index на LHS не является переменной-членом. Это аргумент. Переменная-член все еще не инициализирована.

Вы можете использовать:

 graph(int index) 
     { 
     this->index = index; 
     } 

еще лучше, я рекомендую использовать:

 graph(int index) : index(index) {} 

сделать изменения для всех переменных-членов.

Смежные вопросы