определенный пользователем класс МАССИВА в c с указателем

#c #class #destructor #dynamic-memory-allocation

Вопрос:

Этот код представляет собой определение класса массивов, которое использует динамическую память для выделения памяти. Команда ArrayClass temp(_size); в методе operator выдает следующую ошибку во время выполнения.

Необработанное исключение в 0x7715C54F в ArrayClass.exe: Исключение Microsoft C : std::bad_array_new_length в ячейке памяти 0x0033FB10.

Если мы преобразуем эту команду в ArrayClass *temp = new ArrayClass(_size) , никакой ошибки не произойдет. Но новый объект temp , выделенный new оператором, удален не будет. У кого-нибудь есть решение?

 #include <iostream>
using namespace std;
class ArrayClass {
private:
    int _size;
    float* _ar;
public:
    ArrayClass(const intamp; size) {
        _size = size;
        _ar = new float[_size];
    }

    ~ArrayClass() {
        delete[]_ar;
    }

    const ArrayClassamp; operator=(const ArrayClassamp; RightOperand) {
        if (this != amp;RightOperand) {
            if (this->_size != RightOperand._size) {
                delete[] this->_ar;
                this->_size = RightOperand._size;
                this->_ar = new float[this->_size];
            }
            for (int i = 0; i < RightOperand._size; i  )
            {
                this->_ar[i] = RightOperand._ar[i];
            }
        }
        return *this;
    }

    const ArrayClassamp; operator (const ArrayClassamp; RightOperand) {
        //*this RightOperand
        if (this->_size != RightOperand._size) {
            cout << "different Size";
            exit(1);
        }

        ArrayClass temp(_size);
        for (int i = 0; i < _size; i  )
        {
            temp._ar[i] = this->_ar[i]   RightOperand._ar[i];
        }
        return temp;
    }
};


int main() {
    ArrayClass  x(5), y(5), z(5);
        
    x = y;

    z= x   y;

    

    return 0;
}
 

Комментарии:

1. Сразу очевидно, что правило трех не соблюдается, хотя это может быть не единственной проблемой с кодом и не непосредственной причиной сбоя.

2. Вы не можете вернуть ссылку на локальную переменную.

3. Tnx много для ваших решений