gpt4 book ai didi

c++ - 带类的二叉树

转载 作者:行者123 更新时间:2023-11-28 00:02:20 24 4
gpt4 key购买 nike

我有这段代码:

class Node{
public:
Square square;
Node *NW;
Node *NE;
Node *SW;
Node *SE;

};

int main()
{
Square s(2,3,1);
Node *root;

root->square=s;
cout<<root->square.length();

}

Square 是我创建的一个类。但是当我运行这段代码时,我得到了段错误 11。基本上我想使用 Square 类的对象作为树的数据类型,长度是 square 对象的函数。为什么这是错误的?

最佳答案

您应该在堆栈上声明您的节点

int main()
{
Square s(2,3,1);
Node root;

root.square = s;
cout << root.square.length();
}

当前的问题是您使用的是未初始化、未分配的指针。如果你想坚持一个指针(在这种情况下没有理由这样做),你需要 new 它(然后记得 delete 它)。

int main()
{
Square s(2,3,1);
Node *root = new Node;

root->square = s;
cout << root->square.length();

delete root;
}

在现代 C++ 中,如果您确实需要指针(例如,如果类是多态的等),您应该更喜欢智能指针而不是原始指针。

int main()
{
Square s(2,3,1);
auto root = std::make_unique<Node>();

root->square = s;
cout << root->square.length();
}

关于c++ - 带类的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37887969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com