尝试从另一个头文件调用函数时出错(C ++)

时间:2014-12-03 17:56:27

标签: c++ binary-search-tree header-files

我开发了一个双参数二进制搜索树,现在我正在尝试应用它来创建字典。我在树中的find函数可以正常工作,但是,当我尝试在我的字典类中调用它时,我得到一个编译器错误"在'>'之前预期的primary-expression;令牌&#34。任何人都可以帮我理解出了什么问题吗?我不太熟悉尝试从其他文件调用函数。

这是我在bst.h

中的二叉搜索树中的find函数
    V & find (K key)                      
    {

    TreeNode<K,V> *traverseFind;

    traverseFind = root; 
    unsigned int compareTraverseToHeight = 0;

    while (compareTraverseToHeight < heightCount) 
    {
        if (traverseFind == NULL)  // Fallen off
        {
            keyFinder = 0;
            break;

        }

        else if ( key == traverseFind->key )// Found key
        {
            keyFinder = 1;
            break;
        }       

        else if ( key < traverseFind->key )                   
        {                                                 .
            traverseFind = traverseFind->left;
        }   


        else
        {
            traverseFind = traverseFind->right;
        }  


         compareTraverseToHeight++;      

    }  // end of loop


            if(keyFinder ==0)
            {
                throw key_not_found_exception();

            }


        cout<<"RETURNED "<<traverseFind->value<<endl;

        return traverseFind->value;

}

字典:

    #include bst.h

    template <class K, class V> class Dictionary
    {
    public:

        BinarySearchTree<K,V> wiktionary;

        Dictionary()
        {
        }

        ~Dictionary()
        {
        }

    V & find (K key)
    {

        return(wiktionary.find(<V>));  //this is the issue

    }



    private:


    };

    #endif

主要应用程序:

int main()
{

    Dictionary<string, int> d;
    int val = d.find("abc");
    if (val != 15)
        throw dictionary_tester_exception(__FILE__, __LINE__);

    return 0;

}

1 个答案:

答案 0 :(得分:0)

问题是<V>指定了模板参数,但您试图将其作为函数参数传递给BinarySearchTree::find()find成员函数不是模板化的,因此即使您尝试将其作为模板参数传递也无法使用。根据提供的代码,您应该将key作为参数传递给find,如此

return(wiktionary.find(key));