класс 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; }
};
Другое дело, что нет никакого смысла в этом. Этот указатель вполне можете хранить и в самом классе наследника. Базовому классу он вообше не нужен
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как с помощью функции GetPixel получить данные о пикселе файла изображения? Или как сделать хендл не к окну консоли, а к файлу?
Пожалуйста, помогите новичку понять в чем могут быть ошибкиДолго не могу разобраться
Если некоторый обьект std::bitset инициализирован отрицательным числом, как вернуть истинное значение этого числа методами std::bitset? Например,...