【发布时间】:2017-03-26 06:29:34
【问题描述】:
我正在尝试为class Menu 创建一个函数指针向量。
但我不知道如何定义它,因为指向我要添加的函数的指针有不同类型的参数,有些根本没有。
我的设想是这样的:
vector<SomeReturnType(*)(SomeArgType)> functions;
我可以在哪里添加定义如下的函数:
SomeReturnType function_1(Class_1 c1);
SomeReturnType function_2(Class_2 c2);
SomeReturnType function_3();
像这样添加:
functions.push_back(function_1(object_of_Class_1));
functions.push_back(function_2(object_of_Class_2));
functions.push_back(function_3();
但这显然是不可能的。最好的方法是什么?
感谢您的关注。 干杯!
【问题讨论】:
-
您不能将它们放在向量中。向量存储所有相同类型的东西。如果你可以将不同的类型放在一个向量中,你会如何使用它?
functions[i].(??? what's inside ???)没有办法做到“这个”,也许告诉我们你想用“这个”解决你想要解决的问题? -
好吧,如果先将它们全部转换为 void*,则可以将它们放入向量中。毕竟,它们只是指针。但是大概你想在某个时候调用这些函数,所以你需要知道如何将每个 void 指针转换回正确的函数签名来做到这一点。也许你真正想要的是一个 vtable,你可以通过创建一个带有虚函数的基类来获得它。
-
可能您应该看到这里提出的类似问题的答案stackoverflow.com/questions/11037393/…
标签: c++ vector types arguments function-pointers