2014-05-14 35 views
0

我得到它构建二叉搜索树时,我不明白的错误:错误:未定义参考...调用另一个成员函数的成员函数时

这里是我的类的声明:

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; 
} 

然后我调用此函数TREE_MINIMUM定义BINARY_DELETE功能时(未完还):

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,我声明了它并定义了它,我找不到我错过的东西,有人可以帮我解决吗?

+0

请将您的代码缩进好。它使阅读更容易。向我们介绍一段文字是无益的! – Rook

+0

@Rook对不起,我在这里只是不熟悉它,会更注重缩进:) – user106592

回答

3

这定义了一个独立的功能:

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

你可能想要这个:

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

不要忘了,他们属于这个类来装点你的成员函数的定义!

+0

@Ajay我看到我失踪的东西,非常感谢! – user106592

+0

@ user106592 Ajay为我解决了一个错字(谢谢!),但他并没有最初写出答案;) – Rook

+0

将它全部放入命名空间会使它更容易。 – zoska

相关问题