(1) Как создать std :: vector функций, чтобы вы могли сделать что-то вроде этого:
int main ()
{
std::vector<????> vector_of_functions;
// Add an adding function into the vector
vector_of_functions.push_back(
double function (double a, double b) {
return a + b
}
);
// Add a multiplying function into the vector
vector_of_functions.push_back(
double function (double a, double b) {
return a * b;
}
);
// Use the functions
std::cout << "5 + 7 = " << vector_of_functions[0](5, 7); // >>> 5 + 7 = 12
std::cout << "5 * 7 = " << vector_of_functions[1](5, 7); // >>> 5 * 7 = 35
return 0;
}
Хотя я хотел бы, чтобы функция возврата и параметры могли быть любого типа,это не должно быть.Я в порядке, если они являются типом набора.
(2) Как передать этот тип std :: vector в качестве параметра функции.
void func (std::vector<???> vof) {
std::cout << vof[0](5, 7);
};
int main ()
{
std::vector<????> vector_of_functions;
// Add an adding function into the vector
vector_of_functions.push_back(
double function (double a, double b) {
return a + b
}
);
// Add a multiplying function into the vector
vector_of_functions.push_back(
double function (double a, double b) {
return a * b;
}
);
// Call the function
func( vector_of_functions ); // >>> 12
return 0;
}
(3) Как мне сделать то же самое, кроме случаев, когда функция является методом класса, определенного в заголовочном файле.Код .cpp будет таким же, как и раньше, за исключением того, что функция будет void ClassName::func(...);
.h. Код будет примерно таким:
class ClassName {
public:
ClassName();
void func(????);
}