传递指针到模板化函数的语法
syntax for passing pointer to templated function
我的一个版本的代码工作。另一个(我本来认为更好)无法编译。如果我声明简单的函数对:
template<class T>
void pass_function(T (*func))
{
cout << func() << endl;
}
double func_to_pass()
{
return(0);
}
我可以调用
pass_function(&func_to_pass);
,一切正常。我知道它正在"计算"出模板代表的是double类型,尽管我在调用中没有告诉它它是double类型。
但是如果我调用
pass_function<double>(&func_to_pass);
我天真地认为这会更好,因为我试图告诉它作为参数传递的函数将返回double类型。但是我得到了错误:
error: no matching function for call to ‘pass_function(double (*)())’
所以,很明显我误解了使用模板的语法。
将定义更改为
template<class T>
void pass_function(T (*func)())
{
cout << func() << endl;
}
否则,当显式指定模板参数时,函数将被特化,如
void pass_function( double * );
相关文章:
- C++使用 rand 定义函数语法
- QObject::连接不起作用 - 使用函数语法找不到信号
- C++ std::函数语法问题
- 如何在不更改现有函数语法的情况下将普通指针替换为共享指针
- 模板化函数语法错误中使用的模板化类中的嵌套类
- C 变化函数语法
- 返回语句中的构造函数语法
- 复制构造函数语法错误:myclass 没有成员 mymember
- C++.传递给函数.语法问题
- C++可视化工作室函数语法突出显示
- 在 c++ 中移动 2d 数组的构造函数(语法逻辑不清楚):
- c 通过值或指针函数语法
- 正确的朋友模板函数语法
- C++类构造函数语法的解释
- C++ 使用指针移动构造函数(*&&&语法)
- 复制构造函数语法并显示构造函数的值
- 回调函数语法
- 类模板专用化中的成员函数语法
- C++学习函数语法
- 使用模板 C++ 的友元函数语法错误