如何向方法传递可以是任何类型函数的参数?
How can I pass to a method an argument that could be a function of any type?
我必须创建一个库作为赋值,它将在linux终端上实现类似菜单的功能。因此,我必须为每个子菜单启用一个位置,要么是另一个子菜单,要么是对某个函数的调用。
我想知道如何实现这样的调用。因为它是一个库,所以它可以用于十几种不同类型的函数,接受不同数量和类型的实参。
如何实现这样一个方法调用另一个函数,而不假设这些函数的任何东西,但可以调用它们?我应该使用模板还是有其他方法;或者我应该用另一种方式来实现它?
您可以使用带有虚拟方法的对象来完成此操作。然后,应用程序可以决定将哪些参数放入回调对象中。
class MenuItem;
// Callback Interface
struct MenuCallback
{
virtual void activated(MenuItem* sender) = 0;
virtual ~MenuCallback(){}
};
// Application Code
struct ConcretMenuCallback: MenuCallback
{
ConcretMenuCallback(int parameter1);
void activated(MenuItem* sender)
{
// do something with the data stored in this object
}
};
// Example Item
class MenuItem
{
MenuItem(MenuItem*parent, std::string caption, MenuCallback* cb);
void notify();
}
MenuItem::notify()
{
// call the callback-Object
if(m_callback)
m_callback->activated(this);
}
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- C++ 将 CIN 值存储到任何类型的数组中
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- 为什么 std::lerp 不适用于任何已实现所需操作的类型?
- 对任何类型的元素数组进行排序
- 任何种类的分数 在任何类型的订单中
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 为什么 c++ 中的 main() 函数不采用除 int 和 void 之外的任何其他返回类型
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- 如何制作可以接受任何类型的参数的 std::函数和 lambda
- std::map 保存任何值类型
- 为自定义打印调试实现传递任何类型的变量
- MSVC 错误:4 个重载中的任何一个都无法转换所有参数类型
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 如何在不给它任何类型(如整数)的情况下定义某物?
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- 重载运算符:常量与非常量返回类型:任何性能差异
- 通过引用传递自定义类型-任何性能优势