我有一个包含
的.h
文件
template <typename DataType>
class BST
{
private:
struct BinaryNode
{
//variables
}
public:
BinaryNode *root;
int contains(const DataType &x, BinaryNode *&t) const;
}
我试图通过以下方式致电contains
:
void SequenceMap::merge(BST<SequenceMap> theMap)
{
theMap.contains(this, theMap.root);
}
contains
的实施是
template <typename DataType>int BST<DataType>::contains(const DataType &x, BST<DataType>::BinaryNode *&t) const
{
//some stuff
}
我遇到的问题是:no matching function call to BST<SequenceMap>::contains(SequenceMap* const, BST<SequenceMap>::BinaryNode*&)
theMap.contains(this,theMap.root)
由于this
是Datatype
SequenceMap
的变量且theMap.root
是BinaryNode
,我不确定这是错误的部分。我尝试将其更改为*theMap.root
,但这没有用。
答案 0 :(得分:3)
该函数通过引用而不是指针来调用x。你可能想要:
theMap.contains(*this, theMap.root);