为什么模板函数在c ++中给出错误

时间:2018-03-20 05:00:15

标签: c++ templates

我有模板功能

template<typename A,typename B,typename C>
C fun(A a,B b)
{
    return (string)(a+b);
}

我的主要是

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    auto c= fun(10,20.3);
    cout<<c;
    return a.exec();
}

如果我执行它,它说   在函数int main(int, char**)

错误:没有匹配函数来调用fun(int, double)

请让我知道为什么我不能这样做,或者这是错的?

1 个答案:

答案 0 :(得分:0)

总之,您需要good C++ book;

首先,您不能在C ++中“简单地”将对象转换为select * , (select count(*) from LCI where username = ? and date= ? ) as thecount from LCI where username = ? and date= ? ,(C ++中的转换遵循我们无法在此处完全解释的一些原则 1 )。更糟的原始类型。对于数字类型,有一个函数std::to_string

其次,有一个称为template argument deduction的东西,它自动从用于实例化功能模板类模板的参数中推导出模板参数(C + +17)。在,std::string - 其中C fun(A a, B b)都是模板类型。没有办法用一些进一步的巫术来推断A, B, and C。或者您可以使用占位符返回类型C

1 再次,你应该得到good C++ book;