Я хочу создать класс, который инициализирует массив,
Пример класса с членом массива со значением инициализации:
struct foo {
int member[10] = {};
};
Что не так с моим классом?
Это неправильно:
int p[]={};
Во-первых, элемент не может быть массивом неопределенной длины, даже если онимеет инициализатор. Во-вторых, ни одна переменная не может быть массивом нулевой длины.
и функция push, которая добавляет элемент в массив, чем печатает его
Невозможно добавить элементыв массив. Массив имеет постоянное количество элементов на протяжении всего времени его жизни.
Вероятно, вам нужна структура данных, которая динамически выделяет массив и копирует элементы в новый, больший массив при добавлении большего количества элементов. В структуре данных есть нечто большее, чем это краткое описание. Существует стандартный контейнер, который реализует структуру данных «массив с изменяемым размером»: std::vector
.