我有一些C++函数,看起来像这样:
template<class T> bool function(QString *text, T number, T (*f)(QString, bool)){
bool ok = true;
QString c = "hello";
T col = (*f)(c, &ok);
// do something with col here ...
return true;
}
我将其翻译为:“我是通过以下方式从外部调用它的。”
double num = 0.45;
double (*fn)(QString, bool) = &doubleFromString;
function(&text, num, fn);
并且(已编辑)
unsigned int num = 5;
int (*fn)(QString, bool) = &intFromString;
function(&text, num, fn);
我遇到了错误
template parameter T is ambigious
我猜问题出在模板和将函数作为参数传递上,但我不确定如何解决。 (我不想写两次功能,只是使用不同的类型)。 有什么解决办法吗?
QString
替换为std::string
,这应该没有什么区别,并且我无法重现它。 - chrisfunction<double>(&text, num, fn)
来覆盖模板参数推导。 - Jonathan Wakely