类 的二叉树
Binary tree with classes
我有这段代码:
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();
}
方块是class我创造的。但是当我 运行 这段代码时,我得到了分段错误 11。基本上我想使用 class Square 的对象作为树的数据类型,长度是 square 对象的函数。为什么这是错误的?
你应该在堆栈上声明你的Node
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++ 中,如果你确实需要一个指针(例如,如果 class 是多态的,等等)你应该更喜欢智能指针而不是原始指针。
int main()
{
Square s(2,3,1);
auto root = std::make_unique<Node>();
root->square = s;
cout << root->square.length();
}
root = new node;
root -> squares = s;
delete root;
root = NULL;
您需要为指针分配内存。您正在尝试取消引用尚未分配的指针。这就是你出现段错误的原因。
我有这段代码:
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();
}
方块是class我创造的。但是当我 运行 这段代码时,我得到了分段错误 11。基本上我想使用 class Square 的对象作为树的数据类型,长度是 square 对象的函数。为什么这是错误的?
你应该在堆栈上声明你的Node
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++ 中,如果你确实需要一个指针(例如,如果 class 是多态的,等等)你应该更喜欢智能指针而不是原始指针。
int main()
{
Square s(2,3,1);
auto root = std::make_unique<Node>();
root->square = s;
cout << root->square.length();
}
root = new node;
root -> squares = s;
delete root;
root = NULL;
您需要为指针分配内存。您正在尝试取消引用尚未分配的指针。这就是你出现段错误的原因。