【发布时间】:2015-07-14 14:38:45
【问题描述】:
我正在为 C++ 模板、函数和绑定而苦苦挣扎。
假设我的班级A 是这样的:
class A {
void set_enabled_for_item(int item_index, bool enabled);
void set_name_for_item(int item_index, std::string name);
int item_count();
}
我想像这样在A 创建一个方法:
template <typename T>
void set_for_all_items(T value, ??? func) {
auto count = trackCount();
for (auto i = 0; i < count; ++i) {
func(i, value);
}
}
所以我可以在参数中使用 A 的成员函数来调用它,就像这样(或类似的东西):
auto a = new A;
a->set_for_all_items("Foo Bar", &A::set_name_for_item);
三个??? 将是第二个参数的类型。由于我对 std::function、std::bind 和模板还很陌生,所以我尝试了我已经知道可以使用的方法,但总是遇到编译错误。
那该怎么做呢?
【问题讨论】:
标签: c++ std-function