gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:22:16 25 4
gpt4 key购买 nike

我编写了以下代码将数字转换为字符串并反转在代码的注释部分我想使函数类型成为模板认为它将根据上下文获取类型“例如,如果我分配它到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com