C++ 为什么编译器(g+;+;)找不到第一个add函数?

C++ 为什么编译器(g+;+;)找不到第一个add函数?,c++,g++,overloading,function-templates-overloading,C++,G++,Overloading,Function Templates Overloading,我试图替换为add(root,newsbtnode(key,value)),编译器只是告诉我是错的 error: no matching function for call to 'SBTree<row_col, int>::add(SBTNode<row_col, int>*&, SBTNode<row_col, int>*)' void add(Key& key,Value& value) { add(root,new SB

我试图替换为
add(root,newsbtnode(key,value)),编译器只是告诉我是错的

 error: no matching function for call to 'SBTree<row_col, int>::add(SBTNode<row_col, int>*&, SBTNode<row_col, int>*)'
  void add(Key& key,Value& value) {  add(root,new SBTNode<Key,Value>(key,value));}
                                     ^~~
note: candidate: 'void SBTree<Key, Value>::add(Key&, Value&) [with Key = row_col; Value = int]'
  void add(Key& key,Value& value) {  add(root,new SBTNode<Key,Value>(key,value));}
错误:应在“,”标记之前使用主表达式
void add(Key&Key,Value&Value){add(root,new SBTNode(Key,Value));}
^
错误:在“>”标记之前应该有主表达式
void add(Key&Key,Value&Value){add(root,new SBTNode(Key,Value));}

当我给两个函数起不同的名字时,一切正常,在这种情况下函数重载有什么问题?

要调用由成员函数隐藏的全局add函数,请在函数调用前加上::(全局范围运算符)

模板
类SBTree
{
//...
无效添加(键和键、值和值){
::添加(根,新SBTNode(键,值));
}
};
请做一个简单的回答。我无法编译您的代码,如图所示。从问题的描述来看,当查找到成员函数
add
时,查找似乎停止了,并且它不会一直在全局范围内查找另一个
add
 error: no matching function for call to 'SBTree<row_col, int>::add(SBTNode<row_col, int>*&, SBTNode<row_col, int>*)'
  void add(Key& key,Value& value) {  add(root,new SBTNode<Key,Value>(key,value));}
                                     ^~~
note: candidate: 'void SBTree<Key, Value>::add(Key&, Value&) [with Key = row_col; Value = int]'
  void add(Key& key,Value& value) {  add(root,new SBTNode<Key,Value>(key,value));}
error: expected primary-expression before ',' token
  void add(Key& key,Value& value) {  add<Key,Value>(root,new SBTNode<Key,Value>(key,value));}
                                            ^
error: expected primary-expression before '>' token
  void add(Key& key,Value& value) {  add<Key,Value>(root,new SBTNode<Key,Value>(key,value));}