我正在尝试将回调传递给模板函数,但 GCC 给了我
error: no matching function for call to ‘Test::iterate(main(int, char**)::<anonymous struct>&)’
为什么这不起作用?(另外,由于我无法控制的原因,我不能使用 C++11。)
我也尝试过命名结构 egmyvis
并调用test.iterate<myvis>(visitor)
,但这也不起作用。
#include <deque>
#include <iostream>
class Test {
public:
std::deque<int> d;
template <typename C>
void iterate(C& c) {
for(std::deque<int>::iterator itr = d.begin(); itr != d.end(); itr++) {
c(*itr);
}
}
};
int main(int argc, char** argv) {
Test test;
test.d.push_back(1);
test.d.push_back(2);
struct {
void operator()(int x) {
std::cout << x << std::endl;
}
} visitor;
test.iterate(visitor);
}