错误:未定义的引用…在另一个成员函数中调用成员函数时

Error:undefined reference to... when calling a member function in another member function

本文关键字:函数 成员 调用 另一个 未定义 引用 错误      更新时间:2023-10-16

在构建二叉搜索树时,我得到了一个我不理解的错误:

下面是我的类声明:

class BINARY{
public:
    struct node{
        double key;
        node *parent;
        node *left;
        node *right;
    };
    node *root;
    int count;
    BINARY();
    bool IS_EMPTY();
    int BINARY_SIZE();
    node *SUCCESSOR(node *pointer);
    node *PREDECESSOR(node *pointer);
    node *BINARY_INSERTION(double element);
    double BINARY_DELETE(node *target);
    node *BINARY_SEARCH(double element);
    void INORDER_TREE_WALK(node *pointer);
    node *TREE_MINIMUM(node *pointer);
    node *TREE_MAXIMUM(node *pointer);
    void TRANSPLANT(node *transtree, node *postion);
};

中定义了一个函数,用于查找某一子树中的最小元素

BINARY::node *TREE_MINIMUM(BINARY::node *pointer)
{
    BINARY::node *index=pointer;
    while(index->left!=NULL)
    index=index->left;
    return index;
}

然后在定义BINARY_DELETE函数(尚未完成)时调用这个函数TREE_MINIMUM:

double BINARY::BINARY_DELETE(BINARY::node *target)
{
    if(target->left==NULL) TRANSPLANT(target->right, target);
    else if(target->right==NULL) TRANSPLANT(target->left, target);
    else{
        BINARY::node *pointer;
        pointer=TREE_MINIMUM(target);
    }
}

但是,编译器发送错误:

In function `BINARY::BINARY_DELETE(BINARY::node*)':
binary.cpp:(.text+0x3dc): undefined reference to `BINARY::TREE_MINIMUM(BINARY::node*)'
collect2: error: ld returned 1 exit status

,我尝试了几种方法来摆脱它,但没有成功。对于函数BINARY_MINIMUM,我声明它以及定义它,我找不到我错过了什么,有人能帮助我吗?

这定义了一个独立函数:

BINARY::node *TREE_MINIMUM(BINARY::node *pointer) { //...

你可能想要这个:

BINARY::node *BINARY::TREE_MINIMUM(BINARY::node *pointer) { //...

不要忘记用成员函数所属的类来修饰它们的定义!