У меня есть программа на C ++, где я могу вызывать нестатические функции, вызывая объект.Вызов нестатической функции:
#include <iostream>
class ClassF {
public:
void enumerateF() {
std::cout << "f1\n";
std::cout << "f2\n";
}
};
class ClassG {
public:
void enumerateG() {
std::cout << "g1\n";
std::cout << "g2\n";
}
};
template<typename F, typename FUNC>
void do_work(FUNC g)
{
F f;
(f.*g)();
}
int main()
{
do_work<ClassF >(&ClassF::enumerateF);
do_work<ClassG >(&ClassG::enumerateG);
return 0;
}
Это дает вывод:
f1
f2
g1
g2
Как вызывать статическую функцию:
#include <iostream>
class ClassF {
public:
static void enumerateF() {
std::cout << "f1\n";
std::cout << "f2\n";
}
};
class ClassG {
public:
static void enumerateG() {
std::cout << "g1\n";
std::cout << "g2\n";
}
};
template<typename F, typename FUNC>
void do_work(FUNC g)
{
(F::*g)();
}
int main()
{
do_work<ClassF >(&ClassF::enumerateF);
do_work<ClassG >(&ClassG::enumerateG);
return 0;
}
Это выдает ошибку:
Ошибка Синтаксическая ошибка C2760: неожиданный токен «идентификатор», ожидается ») '
Но я не знаю, как вызывать статические функции, передавая имя статической функции в качестве параметра в шаблон.Пожалуйста, помогите