gpt4 book ai didi

c++ - 第一次在 C++ 中使用类,发生了什么?

转载 作者:太空狗 更新时间:2023-10-29 23:52:08 27 4
gpt4 key购买 nike

我正在尝试实现自定义树结构,但我得到了一个奇怪的输出。

enum letter{B,A,T,G,C,N};
struct Node {
int ltr;
Node* ptr;
};
class GTree
{

public:
GTree(int);
void insert(int);
private:
Node* root;
void insert(int l,Node* leaf);
};
GTree::GTree(int l)
{
root->ltr=l;
}
void GTree::insert(int l, Node *leaf)
{
cout<<leaf->ltr;
}
void GTree::insert(int l)
{
if(root==NULL)
{
insert(l, root);
}
else
{
root= new Node;
insert(l,root);
}
}
int main()
{
GTree tree=GTree(T);
tree.insert(T);
}

输出结果为 -2062064467,尽管我期待 2。这是怎么回事?我正在查看一个简单的 BTree 实现,但打算将其重新用于我想要的数据结构。

最佳答案

第一次创建 GTree 对象时,您没有创建 Node 对象。

GTree::GTree(int l)
{
root->ltr=l;
}

应该是

GTree::GTree(int l)
{
root = new Node();
root->ltr=l;
}

另外,确保你有一个析构函数来清理资源。


我觉得我应该指出的另一件事是 GTree::insert(int l, Node *leaf)可能不会按照您的预期去做。

cout<<leaf->ltr;

上面的代码只输出了节点中的整数值,并没有实际赋值。

但也许您还没有完成那部分。 :-)

关于c++ - 第一次在 C++ 中使用类,发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203778/

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