Я устанавливаю класс в c ++, который будет иметь объекты массива и функцию для их добавления (путем добавления их отдельных компонентов).Каждый из этих объектов имеет указатель на «новый» массив чисел с плавающей точкой, которые будут добавлены вместе.Я считаю, что либо из-за того, что это указатели, либо они назначены «новым» массивам, при обращении к их компонентам через оператор overloaded + возникает какая-то проблема с памятью, но я не уверен, в чем конкретно заключается проблема.Файл компилируется без каких-либо проблем, но просто говорит "Ошибка сегментации (ядро сброшено)" при запуске.Также я знаю, что в цикле for следует использовать минимальное значение, а не максимальное, но сейчас все мои массивы имеют одинаковый размер, поэтому я просто проверяю его следующим образом.
Если я закомментируюПри фактическом добавлении массивов в main () сообщение об ошибке полностью исчезает, но я не совсем уверен, почему.
#include <iostream>
using namespace std;
class Array
{
private:
int size, location;
float value;
public:
float *arrayptr;
Array(int size)
{
arrayptr = new float[size];
}
void setValue(int location, float value)
{
arrayptr[location] = value;
}
Array operator+(Array a)
{
int max;
if (a.size >= size)
{
max = a.size;
}
else
{
max = size;
}
Array tmparray(max);
for(int i=0; i<max; i++)
{
tmparray.arrayptr[i] = a.arrayptr[i] + arrayptr[i];
}
return tmparray;
}
};
main()
{
Array a1(3);
a1.setValue(0, 1.0);
a1.setValue(1, 22.0);
a1.setValue(2, 12.2);
Array a2(3);
a2.setValue(0, 3.3);
a2.setValue(1, 44.5);
a2.setValue(2, 21.7);
Array tmp(3);
// Source of the error (parenthesis doesn't seem to affect it):
tmp = (a1 + a2);
}