为什么我的模板函数在这个调用中不是一个有效的匹配
Why my template function is not a valid match in this call?
我编写了以下代码将数字转换为字符串并反转在代码的注释部分,我想使函数类型为模板认为它会根据上下文获取类型"例如,如果我赋值如果是整型变量,函数将是整型的,但编译器不会发生这种情况给出错误信息
D:computer scienceprojectstringToint.cpp In function 'int main()':
49 25 D:computer scienceprojectstringToint.cpp [Error] no matching function for call to 'intstr(const char [10])'
49 25 D:computer scienceprojectstringToint.cpp [Error] candidate is:
17 21 D:computer scienceprojectstringToint.cpp template<class T> T intstr(std::string)
我认为他们使用stringstream对象是错误的但是我成功地实现了这个函数我指定了函数的类型,但这让我写不同类型的函数不同
是我错过了什么,明白了什么,请帮忙
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
template<typename T>
string strint (T oty)
{
string ity;
stringstream ss;
ss<<oty;
ss>>ity;
return ity;
}
/*
template<typename T>
T intstr (string oty)
{
T ity;
stringstream ss;
ss<<oty;
ss>>ity;
return ity;
}
*/
int intstr (string oty)
{
int ity;
stringstream ss;
ss<<oty;
ss>>ity;
return ity;
}
signed char charstr (string oty)
{
signed char ity;
stringstream ss;
ss<<oty;
ss>>ity;
return ity;
}
int main()
{
int i;
signed char c;
string s;
s=strint(123);
cout<<s<<endl;
i=intstr("123456789");
cout<<i<<endl;
c=charstr("2");
cout<<c;
return 0;
}
你应该显式地为函数指定模板参数,因为编译器不能deduce
T,因为函数args中没有T
类型的参数。像
intstr<int>("123456789");
谢谢@ForEveR我现在减少我的代码看起来像这样,它工作得很好我希望这是将数字转换为字符串和反之亦然的最佳解决方案使用stringstream谢谢你
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
template<typename T1,typename T2>
T2 strint (T1 oty)
{
T2 ity;
stringstream ss;
ss<<oty;
ss>>ity;
return ity;
}
int main()
{
cout<< strint <string,int>("1234") <<endl;
cout<< strint <int,string>(456) <<endl;
cout<< strint <string,float>("3.14") <<endl;
cout<< strint <string,char>("3") <<endl;
return 0;
}
相关文章:
- void() 是一个有效的C++表达式吗?
- C++14 : 2 个随机生成器 - 一个有效,另一个无效
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- 一个有效的图算法,满足以下条件
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 这是一个有效的单例类吗?
- C++,我正在尝试创建一个有效的.bmp输出文件
- 尝试获取用户输入和cout消息期望,当我输入一个有效名称时,它将所有这些命名
- 如何说一个有效或无效,即使一个是,另一个不是
- 模板中的方法:一个有效,一个不实例化
- 如何确保迷宫总是有一个有效的路径C++
- 这是一个有效的编译器优化吗
- 如何删除C++中浮点数的最后一个有效数字/尾数位
- 在给定平方矩阵的子矩阵中找到一个有效的算法来回答查询
- 我们可以检查一个指针以确保它是一个有效的地址吗
- 这是一个有效的生成文件吗?
- 指针和类有问题。两个相同的类,其中一个有效,一个无效
- dynamic_cast不能保证一个有效、完整的对象?
- 选择一个有效的数据结构来寻找韵律
- 将引用分配给引用是一个有效的操作