2013-09-19 4 views
0

Просто переместил мою программу из окон в linux и тот же код, который работал, теперь дает мне ошибку сегментации при вызове оператора < < < Функция main. (обзор) Мои программы - это класс Vector, который принимает ввод и возвращает то, что вводится, но когда достигает << endl, он падает, если я удалю endl с main(), это не сбой?Оператор << Перегрузка, endl приводит к ошибке сегментации

..///main 


VecXd<int> x;           
     cout << "Input vector a\n"; 

cin >> a; 


cout << "Test A: "<< a << endl; //seg fault, -> 
cout << "Test A: " << a; //works 

//----- class VecXd\\ opertor<< def + operator>> 

    /******************************************************/ 
    friend istream &operator>>(istream &input, VecXd& vec) 
    { 

     for(int i = -1; i <= vec.dimension - 1; i++) 
     { 
      if(i == -1) 
      { 
      input >> vec.dimension;//>> (V vecArr = new V[vec.dimension]); 
      cout << vec.dimension << " dimension check" << endl; 
      vec.vecArr = new V[vec.dimension]; 
           //vec.dimension = vecArr[0]; 
           //cout << vec.dimension << " dimension check" << endl; 
      } 
      else 
      { 
      input >> vec.vecArr[i];//>> (V vecArr = new V[vec.dimension]); 
      cout << vec.vecArr[i] << " value check" << endl; 
      } 
     } 


    } 

    friend ostream& operator<<(ostream& output, const VecXd& vec) 
    { 
      for(int i = 0; i < vec.dimension; i++) 
      { 
      output << vec.vecArr[i] << " "; 

      } 
      output << endl; 
     // output << endl; 

    } 
    /****************************************************/ 

Почему endl ведет к сбою? не заканчивается вывод массива endl для решения этой проблемы?

+0

В lauguage C++ – SxMZ

+3

вопрос остается неясным. Сбой скорее всего не из-за использования 'endl', проверьте, является ли' vec.vecArr' допустимым указателем, а 'i' является правильным для всех входов. –

ответ

3

Вы забыли вернуть ostream&istream&).

Добавить -Wall флаг вашей команды компиляции, если вы используете GCC/лязг/КВК

+0

Упс, сделана случайная правка. Пожалуйста, игнорируйте. Фактический комментарий: интересно, компилятор OPs выдает предупреждение об этом ... – thokra

+0

thats it! Благодарю Anycom! – SxMZ

+0

По умолчанию gcc не предупреждает о недостающих возвратах. Меня иногда это укусит. – Anycorn

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