Я передаю массив конструктору. Конструктор имеет два параметра: указатель на int, называемый data, и int, который является размером массива.
Я выделяю динамическую память в определении конструктора для этого массива и передаю указатель массива на это хранилище.
Последний, но один шаг - печать значений в массиве через указатель, который указывает на первое значение int этого массива.
Последний шаг - освобождение памяти в данных деструктора delete []. На этом шаге я получил сообщение об ошибке: Отладочное утверждение не удалось! Выражение: _CrtlsValidHeapPpinter (block).
Я очень новичок в C ++, поэтому я борюсь за то, что я сделал неправильно в приведенной ниже программе. Не могли бы вы дать мне подсказку, пожалуйста?
#include <iostream>
class Test
{
private:
int* data;
int size;
public:
// constructor and destructor
Test(int* d, int s);
~Test();
// few void methods
void display_data(int size)
{
for (int i{ 0 }; i < size; ++i)
{
std::cout << data[i] << " ";
}
std::cout << std::endl;
}
};
Test::Test(int* d, int s)
: data{nullptr}, size(s)
{
data = new int[s];
data = d;
}
Test::~Test()
{
std::cout << "Destructor is freeing memory" << std::endl;
delete[] data;
}
int main()
{
int data_array[5]{ 2,8,6,10,20 };
Test* t1 = new Test(data_array, 5);
t1->display_data(5);
delete t1;
return 0;
}