一个简单的c ++文件和TT类有两种方法.
#include <map>
#include <string>
#include <iostream>
using namespace std;
class TT{
public:
TT(const string& str);
template<class T>T Read(const string& key)const;
template<class T>T Read(const string& key, const T& value)const;
};
TT::TT(const string& str){
cout<<str<<endl;
}
template<class T>T TT::Read(const string& key)const{
std::cout<<key<<std::endl;
return 1;
}
template<class T>T TT::Read(const string& key, const T& value)const{
std::cout<<key<<'\t'<<value<<std::endl;
return value;
}
int main(void){
TT tt("First");
tt.Read("Hello", 12);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
如果更换
tt.Read("Hello world!", 12);
Run Code Online (Sandbox Code Playgroud)
同
tt.Read("Hello world!");
Run Code Online (Sandbox Code Playgroud)
在主()
G ++说:
new.cc:31:错误:没有匹配函数来调用'TT :: Read(const char [5])'
为什么G ++找不到Read(const string&key)const方法?
谢谢!
您正在尝试定义一个返回T的函数:
template<class T>
T TT::Read(const string& key) const
{
std::cout << key << std::endl;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,您始终int
从此功能返回一个.您需要像这样调用它:
tt.Read<int>("Hello");
Run Code Online (Sandbox Code Playgroud)
或者删除模板定义,因为这里没有意义.
归档时间: |
|
查看次数: |
246 次 |
最近记录: |