Вы создали указатель на node
, но вы не создали node
, чтобы он указывал на.Разыменование такого недопустимого указателя приводит к неопределенному поведению.
Вам необходимо создать node
для a
, на который нужно указать.Либо объект с автоматическим временем жизни:
int main()
{
node n;
node *a = &n;
a->func();
std::cout << '\n' << a->left_node << ':' << a->parent_node << ':' << a->right_node;
}
Или объект с динамическим временем жизни:
int main()
{
node *a = new node;
a->func();
std::cout << '\n' << a->left_node << ':' << a->parent_node << ':' << a->right_node;
}
Хотя в первом случае вам, вероятно, вообще не нужен указатель, и вВ последнем случае вы должны использовать умный указатель, такой как std::unique_ptr
или std::shared_ptr
, чтобы обеспечить правильное освобождение объекта node
.