如何将具有模板参数的函数传递给其他函数?
template <class _T>
void inc(int &x) {
x++;
}
template <class FUNC>
void add(int &x, FUNC f) {
f(x);
}
int main() {
int x = 0;
add(x, inc);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以,我得到"错误:没有匹配函数来调用'添加'".
inc
是一个模板,而不是一个功能.你需要通过inc<int>
:
template <class _T>
void inc(int &x) {
x++;
}
template <class FUNC>
void add(int &x, FUNC f) {
f(x);
}
int main() {
int x = 0;
add(x, inc<int>);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(修正了f
主函数中的拼写错误,而不是添加.)
您忘记将模板参数传递给模板化函数:
template <class _T>
void inc(int &x) {
x++;
}
template <class FUNC>
void add(int &x, FUNC f) {
f(x);
}
int main() {
int x = 0;
add(x, inc<int>); // <-- here
return 0;
}
Run Code Online (Sandbox Code Playgroud)