很难说这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center .
9年前关闭。
它是一个具有 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
对于这种功能。
关于c++ - 在 C++ 中选择在运行时调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15449798/