класс TreeNode наследуется от CalcTree, в классе CalcTree создается указатель на TreeNode => вызывается конструктор TreeNode, который рекурсивно вызывает конструктор CalcTree. как от этого избавиться?
template <typename type_t>
CalcTree<type_t>::CalcTree()
{
head_node (new TreeNode<type_t>(0));
log_file = fopen(log_filename, "w");
}
TreeNode<type_t>::TreeNode(const type_t num = 0, int type_node_t = VALUE, TreeNode<type_t>* left_t = nullptr, TreeNode<type_t>* right_t = nullptr) :
number(num),
type_node(type_node_t),
left_child(left_t),
right_child(right_t)
{}
Просто инициализируйте этот указатель нулем, а в наследниках можете инициализировать адресом обьекта своего типа, по следующему образцу:
struct A;
struct B {
A* pa;
B() : pa(nullptr) {}
};
struct A : B{
A() { pa = new A; }
};
Другое дело, что нет никакого смысла в этом. Этот указатель вполне можете хранить и в самом классе наследника. Базовому классу он вообше не нужен
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как с помощью функции GetPixel получить данные о пикселе файла изображения? Или как сделать хендл не к окну консоли, а к файлу?
Пожалуйста, помогите новичку понять в чем могут быть ошибкиДолго не могу разобраться
Если некоторый обьект std::bitset инициализирован отрицательным числом, как вернуть истинное значение этого числа методами std::bitset? Например,...