Передать метод класса в качестве параметра
Не получается передать метод класса в качестве параметра.
Пример кода
class Cont
{
public:
void add(int a)
{
m_vect.push_back(a);
}
template <class ModuleType>
void map(ModuleType *module, void (ModuleType::*mapMethod)(int a))
{
for (int i = 0; i < m_vect.size(); i++)
(module->*mapMethod)(m_vect[i]);
}
private:
std::vector<int> m_vect;
};
class Oper
{
public:
void mapMethod1(int a)
{
std::cout << a << std::endl;
}
void exec()
{
Cont cont;
cont.add(1);
cont.add(3);
cont.add(4);
cont.map<Oper>(this, mapMethod1); // **ошибка компиляции**
}
};
int main()
{
Oper oper;
oper.exec();
return 0;
}
Ответы (2 шт):
Автор решения: user7860670
→ Ссылка
Синтаксис для получения указателя на нестатическую функцию выглядит как &ClassName::MethodName. При чем в данном случае тип объекта может быть выведен из аргументов и можно не задавать его явно:
cont.map(this, &Oper::mapMethod1);