Вектор указателей на функцию с++
Есть вот такой код:
vector<void()> a;
void b() {}
int main()
{
a.push_back(b);
return 0;
}
И на этапе компиляции он выбивает ошибку:
выполняется компиляция ссылки на экземпляр класс шаблон функции "std::vector<void (void),std::allocator<void (void)>>"
Но если я меняю объявление вектора на vector<void(*)()> a;, то код спокойно компилируется и работает. Объясните пожалуйста, почему так происходит.
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
например так:
typedef void (*func)();
void b() {}
using namespace std;
int main()
{
std::vector<func> a;
a.push_back(b);
return 0;
}
или так:
using func = void (*)();
void b() {}
using namespace std;
int main()
{
std::vector<func> a;
a.push_back(b);
return 0;
}
впрочем можно сразу писать:
std::vector<void (*)()> a;