Вы написали бесконечно рекурсивную функцию. Ваш конструктор Cell::Cell
косвенно вызывает себя полностью new
выражение, которое в свою очередь вызывает снова Cell::Cell
... Это в конечном итоге приводит к переполнению стека и сбою.
(Кроме того, не представляется возможным, чтобы иметь явный массив Cell
объектов внутри Cell
объекта. Такая структура данных будет бесконечно вложенными, т.е. он будет иметь бесконечный размер.)
Обратите внимание, что нет ничего вообще неправильно с рекурсией как таковой. Но в какой-то момент это должно закончиться. Если вы хотите рекурсивно построить свое дерево, вы можете сделать это, но вы должны убедиться, что ваша рекурсия отстает в той или иной точке. То есть ваше дерево должно иметь листовые узлы. Теперь у вас есть дерево без листовых узлов. Это бесконечная рекурсия, которая пытается построить бесконечно большое дерево. Это невозможно. Это не имеет никакого смысла.
Когда пришло время строить ваши листовые узлы - только вы можете ответить. Мы не знаем, какое дерево вы пытаетесь построить.
Каждый раз, когда выделяется «Ячейка», вызывается его конструктор. Это означает, что первый конструктор никогда не выходит с каждого раза, когда вы выделяете еще три. –
Просто сделайте соседи указателями на ячейку и с помощью функции вне конструктора создайте их с помощью «нового» или создайте их один за другим, когда они вам понадобятся. –