Просто переместил мою программу из окон в 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 для решения этой проблемы?
В lauguage C++ – SxMZ
вопрос остается неясным. Сбой скорее всего не из-за использования 'endl', проверьте, является ли' vec.vecArr' допустимым указателем, а 'i' является правильным для всех входов. –