【发布时间】:2017-08-07 14:43:07
【问题描述】:
我处于这种情况:
template<class T>
void testFuncMulti (set<T> setInput, bool (*f)() ) {
f();
}
bool func()
{
cout << "Hello!" << endl;
return true;
}
int main() {
set<string> testSet;
testSet.insert("XXX");
testFuncMulti(testSet, &func);
return 0;
}
我想要实现的是将参数传递给最后一个函数“func”。
尝试了许多不同的方法,但仍然没有。
这是我的尝试:
template<class T>
void testFuncMulti (set<T> setInput, bool (*f)(T) ) {
f(T);
}
template<class T>
bool func(T val)
{
cout << "Hello!" << endl;
return true;
}
int main() {
set<string> testSet;
testSet.insert("XXX");
testFuncMulti(testSet, &func(string("YYY")));
return 0;
}
对不起,我是 C++ 新手...请帮助!
更新:
解决了!!
#include <iostream>
#include <functional>
#include <set>
using namespace std;
template<class T, class U>
void testFuncMulti (const set<T> setInput, U f) {
typename set<T>::iterator iter;
for(iter = setInput.begin();iter != setInput.end();++iter) {
f(*iter);
}
}
template<class T>
bool func(const T val)
{
cout <<val << "Hello!" << endl;
return true;
}
int main() {
set<string> testInput;
testInput.insert("XXX");
testInput.insert("XXX222");
testFuncMulti(testSet, func<string> );
return 0;
}
【问题讨论】:
-
也许你可以试试
std::function。这也允许其他类型的“功能”。
标签: c++