Я уже могу определить вектор указателя на функцию с фиксированным типом параметра в заголовке public:
, а затем обновить его в конструкторе. Но если я хочу иметь возможность передать вектор указателя на функцию с параметром любого типа, как я могу определить его до того, как конструктор обновит его?
#include <iostream>
#include <vector>
class foo {
public:
std::vector<void (*)(int)> functions;
foo(std::vector<void (*)(int)> x) {
functions=x;
}
void run() {
functions[0](2);
}
};
void square(int n) { std::cout << n*n; }
int main() {
foo* bar=new foo(std::vector<void (*)(int)>{square});
bar->run();
return 0;
}
Теперь, как я могу передать вектор конструктору любого типа?
//snippet from above
std::vector<void (*)()> functions; //what do i do here?
template <typename T>
foo(std::vector<void (*)(T)> x) { //this works fine
functions=x;
}