【发布时间】:2018-04-15 03:28:28
【问题描述】:
我正在尝试执行以下操作,但我什至不确定是否可行。
我想要一个接收任意函数指针的函数,以将其传递给不同的函数(我知道这是代码异味,我现在不想讨论良好的软件工程实践)。
换句话说,我正在寻找的东西看起来像:
void method1(arbitraty pointer p)
{
method2(p);
}
我不确定是否有办法声明任意函数指针(返回值保证为void但参数是任意的,无论是数量还是类型)
【问题讨论】:
-
打开你的 C++ 书籍到教你如何使用模板的章节。模板是现代 C++ 中最先进的部分之一,因此,stackoverflow.com 上的简短一/两段答案不足以解释该主题。你需要自己研究这个主题,用一本好书。
-
我猜你可以传递一个 void 指针并强制转换它,但如果你打算从方法 2 内部调用函数,我肯定会抱怨代码异味 - 具有不同数量参数的函数不能互换- 他们对堆栈指针所做的更改被烘焙到生成的代码中,因此如果你施放例如你会破坏你的堆栈。一个 2 参数函数指针指向一个 1 参数函数指针并调用它。顺便说一句,我喜欢上面评论中的“模板”答案——你应该调查一下。也有可变参数模板,也许这些会起作用。
-
你打算用method2中的那个指针做什么?
-
完整的问题是我正在尝试为未来项目的 GLFW 窗口制作一个包装类。我正在尝试通过此方法设置每个 GLFW 回调函数到目前为止的方法一直在滥用这样一个事实,即大多数 GLW 回调函数具有不同的签名并且只是复制 [licate 每个回调函数的代码
-
完整的故事很好,花花公子,但重要的问题是你打算用method2中的指针做什么?显示使用它的代码行。跨度>
标签: c++ pointers function-pointers