Добрый день!
При записи данных происходит ошибка. Получается, что не создается узел дерева. Но понять где именно ошибка не могу, и как её исправить, главное. Дерево состоит из рекурсий класса. Создавать отдельно Node проблемно, т.к. в программе другие функции сложно адаптировать. Укажите, пожалуйста, в каком месте ошибка и как её исправить.
Задание: из строки выделяются данные и записываются в узлы дерева в соответствующем формате.
Вот код:
class Tree
{
public:
int data;
Tree *son;
Tree *brother;
Tree();
~Tree();
void des(Tree *tree, std::string S);
};
Tree::Tree()
{
Tree::data = NULL;
Tree::son = NULL;
Tree::brother = NULL;
}
Tree::~Tree()
{
if (son) delete son;
if (brother) delete brother;
}
void Tree::des(Tree *tree, std::string S)
{
int dataInt;
string son;
string brother;
//В данной части кода происходит обработка строки S, с вычленением из неё dataInt, строк S и строк brother. В них ошибки нет. Данные правильно преобразуются в переменную int и выводятся на печать.
tree->data = dataInt; //Ошибка возникает тут. Пишет что дерево nullptr.
std::cout << data << std::endl;
des(tree->son, son);
des(tree->brother, brother);
}
int main()
{
Tree *tree = new Tree();
std::string S = "(1,65,10)";
tree->des(tree, S);
tree->print_Tree(tree);
system("pause");
delete tree;
return 0;
}
Ну так ошибка очевидна. Вызов tree->des(tree, S);
из main
сразу приводит к вызовам
des(tree->son, son);
des(tree->brother, brother);
в то время как tree->son
и tree->brother
равны null-указателям. В результате все падает из-за того, что параметр tree
в этих вызовах будет null-указателем. Все как вы и описали. В чем затруднение-то?
P.S. Однако непонятно, зачем вы вообще сделали des
методом класса Tree
если к переменным объекта Tree
через this
вы в этом методе вообще нигде не обращаетесь, а везде работаете через параметр tree
.
Как работает динамическая память и какими операторами пользоваться для работы с ней в C++?
Что я делаю не так? Нужно просто написать функцию, которая значения из map переводит в set
Здравствуйте, подскажите пожалуйста почему у меня на сайте в адресной строке подгружается ссылка на объявление а само объявление не грузиться...
Почему не работает данный скрипт? (должен по нажатию на кнопку с классом menu-btn выводить меню) на codepen проверил, все работает