Что ж, если вы настаиваете, но ответ не будет ни лучшим, ни самым легким, и правильность теперь является вашим бременем.
Для конструктора используйте базовый список инициализаторов:
Node::Node(int d, size_t s)
: data(d), numchild(s), nodelist(new Node*[s])
{
}
Мы также делаем numchild
тип без знака, поскольку он представляет размер.
Но теперь вы также должны позаботиться о том, чтобы освободить память при уничтожении. Простой delete[]
не подойдет, потому что сначала нужно пройти через всех детей и рекурсивно освободить их память.
В целом, вектор общих указателей сэкономит вам около 90% кода.