c++ - 为什么我的模板函数在此调用中不是有效匹配项?

标签 c++ function templates return

我编写了以下代码将数字转换为字符串并反转 在代码的注释部分我想使函数类型成为模板 认为它将根据上下文获取类型“例如,如果我分配 它到 int 变量函数将是 int 类型“但这不会发生并且编译器 给出错误信息

D:\computer science\project\stringToint.cpp In function 'int main()':
49  25  D:\computer science\project\stringToint.cpp [Error] no matching function for call to 'intstr(const char [10])'
49  25  D:\computer science\project\stringToint.cpp [Error] candidate is:
17  21  D:\computer science\project\stringToint.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;
}

最佳答案

您应该为函数显式指定模板参数,因为编译器无法推导 T,因为函数参数中没有T 类型的参数。喜欢

intstr<int>("123456789");

关于c++ - 为什么我的模板函数在此调用中不是有效匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730540/

相关文章:

c++ - OpenGL 和 GLUT/C++ 奇怪的纹理循环问题

c++ - 字符串**数组;数组 [行] [列] = "string"上的段错误; C++

javascript - 传递变量时加载时执行的 jQuery 函数

android - 基于函数调用栈优化Android App代码的方法?

c++ 哪个更快,在函数中返回值,还是使用引用参数?

c++ - 关于 C++ 模板最重要的事情……经验教训

html - 我如何在图像下制作一个小的 'shadow',就像这个一样?

c++ - QT线程中的Lua脚本

c++ - clang scan-build Redhat 安装

javascript - Json 数据未使用each append 到Meteor 模板中