これは、5つのオブジェクトと25の関数を持つC++クラスです。実行時に、オブジェクトと関数の名前をパラメーターとして渡し、渡されたオブジェクトに指定されたメソッドを呼び出させたいと思います。
のようなものです
void actionToBetaken(object,string method_name)
{
object.method_name();
}
C ++でどのように可能ですか?
これは通常、関数ポインタを使用して行われます。
template <typename T, typename U>
void f(T &object, U (T::*method)())
{
(object.*method)();
}
これは、メソッドが引数を取らないことを前提としています。次のようにして、引数を使用してメソッドを渡すことができます。
template <typename T, typename U, typename... Args>
void f(T &object, U (T::*method)(Args...), Args&&... args)
{
(object.*method)(std::forward<Args>(args)...);
}
int main()
{
T t;
f(t, &T::f, 5); // calls t.f(5)
}
std::function
またはstd::bind
、この種の機能を使用することもできます。