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

Geo*_*e L 2 c++

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

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);
}
Run Code Online (Sandbox Code Playgroud)

输出结果为-2062064467,尽管我期待着2.什么东西在这里?我正在寻找一个简单的BTree实现,但打算将其重新用于我想要的数据结构.

Jim*_* Lu 6

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

GTree::GTree(int l)
{
    root->ltr=l;
}
Run Code Online (Sandbox Code Playgroud)

应该

GTree::GTree(int l)
{
    root = new Node();
    root->ltr=l;
}
Run Code Online (Sandbox Code Playgroud)

此外,请确保您有一个destuctor来清理资源.


我觉得我应该指出的其他一些事情GTree::insert(int l, Node *leaf)可能是你做不到的.

cout<<leaf->ltr;

上面的代码只输出节点中的整数值,但实际上没有分配它.

但也许你还没有完成那部分.:-)