模板化BST方法的返回值问题

时间:2015-10-09 11:41:26

标签: c++ templates compiler-errors tree return-value

我有一个函数的代码,其目的是解密由字符串r,0和1给出的消息。这个想法是我有一个BST,并且基于我的r 0和1的字符串,我将能够找到我正在寻找的特定数据的途径。

我根本无法弄清楚要返回的内容以匹配函数的返回值,并从我正在寻找的函数中获取信息!这是教授给出的帮助......

 /*The decrypt() method takes an encrypted string (or path through the tree)
in the form provided by encrypt(). It should return a pointer to the 
associated string for the given path (or NULL if the path is invalid).*/

任何人都可以帮我说说如何返回正确的变量类型和值,并解释原因?谢谢! (以下代码)

template<class Base>
const Base * EncryptionTree<Base>::decrypt(const string & path) const{
    const BSTNode<Base>* temp = root;
    bool flag = false;
    for (int i = 0; i < path.size(); i++) {
        switch (path[i]) {
        case 'r':
            if (temp != NULL) {
                temp = root;
            }
            else {
                flag = true;
            }
            break;
        case '0':
            if (temp->getLeft() != NULL) {
                temp = temp->getLeft();
            }
            else {
                flag = true;
            }
            break;
        case '1':
            if (temp->getRight() != NULL) {
                temp = temp->getRight();
            }
            else {
                flag = true;
            }
            break;
        }
    }

    return ?????;
}

我尝试返回* temp,temp,temp-&gt; getData()(返回一个const Base&amp;)等等。

1 个答案:

答案 0 :(得分:0)

我可能错了(因为我没有看到Base和BSTNode的声明)但是如果temp-&gt; getData()返回const Base&amp ;,那么解密函数的结尾可能如下所示:< / p>

if (temp != NULL)
    return &temp->getData();
else
    return NULL;

因此,如果temp not null ,则您使用 getData()来获取此节点包含的对象(在您的案例字符串中)的引用。然后,您将获取此引用所绑定的对象的地址,并将其传递给调用者。