我开发了一个双参数二进制搜索树,现在我正在尝试应用它来创建字典。我在树中的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;
}
答案 0 :(得分:0)
问题是<V>
指定了模板参数,但您试图将其作为函数参数传递给BinarySearchTree::find()
。 find
成员函数不是模板化的,因此即使您尝试将其作为模板参数传递也无法使用。根据提供的代码,您应该将key
作为参数传递给find
,如此
return(wiktionary.find(key));