Я получаю эту странную ошибку (программный сигнал SIGSEGV, ошибка сегментации ->, указывающий на строку кода ниже), когда я отлаживаю программу. Пожалуйста, действительно нужна ваша помощь в этом. Я пытаюсь установить некоторые условия «если», которые обрабатывают «отрицательные» значения инициализации в конструкторе, а также деструктор.Программный сигнал SIGSEGV, ошибка сегментации в выводе
class a
{
public:
a(int _number1=0, float* _array1=NULL);
~a();
friend ostream& operator<<(ostream& output1, a& all_1);
private:
int number1;
float* array1;
};
class b
{
public:
b(int _number2=0, float* _array2=NULL);
~b();
friend ostream& operator<<(ostream& output2, b& all_2);
private:
int number2;
float* array2;
};
a::a(int _number1, float* _array1)
{
if(_number1>0)
{
number1 = _number1;
array1 = new float[number1];
memset(array1, 0, number1*sizeof(float));
}
else array1=_array1;
}
a::~a()
{
if(number1>0) delete[] array1;
}
ostream& operator<<(ostream& output1, a& all_1)
{
if(all_1.number1>0)
{
for(int i=0;i<all_1.number1;i++) output1<<all_1.array1[i]<<"\n";
}
else output1<<"";
return(output1);
}
b::b(int _number2, float* _array2)
{
if(_number2>0)
{
number2 = _number2;
array2 = new float[number2];
memset(array2, 0, number2*sizeof(float));
}
else array2=_array2;
}
b::~b()
{
if(number2>0) delete[] array2;
}
ostream& operator<<(ostream& output2, b& all_2)
{
if(all_2.number2>0)
{
for(int i=0;i<all_2.number2;i++) output2<<all_2.array2[i]<<"\n"; //This is where the error appeared.
}
else output2<<"";
return(output2);
}
int main()
{
a input1(-1);
b input_1(-1);
cout<<input1;
cout<<input_1;
}
Программа работает, когда «класс a» определяется самостоятельно ... но когда я добавляю «класс b» ... программа полностью строится без ошибок, но когда я запускаю ее ... программа сбой ... следовательно, i использовал отладчик n заметил эту странную ошибку ... –