问题标签 [function-pointers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C ++:指向非相关结构内的类成员函数的指针
我已经在网上阅读了一些关于如何解决这个问题的文章,我认为我做得对......我的目标是拥有一个结构对象数组,其中包含指向类的成员函数的指针。
这是我到目前为止所拥有的...
然后,当使用 (stuff[0].*handler)() 调用函数时,带或不带参数(我确实打算使用参数列表),我得到“处理程序”:未声明的标识符...
我必须错过一些东西,只是不知道是什么。
c++ - 模板基类 C++ 中的重写函数指针问题
我为观察者模式实现了一个模板基类,
我正在使用这样的课程
这里的问题是,编译器不能推断模板参数,我不能明确给出模板参数?
有人有想法吗?
编辑:这里的问题是使用模板参数覆盖函数调用。“Emit”函数适用于其他函数类型。
这种模式的用法是
顺便说一句,这是 C++。
c++ - 通过函数指针调用 C++ 成员函数
如何获取类成员函数的函数指针,然后使用特定对象调用该成员函数?我想写:
另外,如果可能的话,我还想通过指针调用构造函数:
这可能吗?如果可以,最好的方法是什么?
c - C:在传递给它的函数中传递函数指针
我正在尝试编写一个映射函数,它接受一个函数指针,并将其传递给另一个函数,但 gcc 对我大喊大叫。
这是我正在尝试做的事情的一个想法。
gcc的投诉:
警告:从不兼容的指针类型传递“地图”的参数 2
有任何想法吗?
c++ - 我可以声明一个可以将指向自身的指针作为参数的函数吗?
阅读stackoverflow中的一个问题,我想知道是否可以声明一个带有指向自身的指针的函数。即作出这样的声明foo
,以下是正确的:
最简单的想法是转换为另一个函数指针(不能转换为void*
,因为它可能更小),所以函数声明如下所示:
虽然这在 C 中是可以的(并且可以在 C++ 中进行强制转换),但我想知道是否可以在没有如此艰难的“重新解释”强制转换或丢失类型信息的情况下完成。
换句话说,我想要以下声明:
但是,当然,无限制的声明是不可能的。天真typedef
也无济于事。
欢迎使用 C++ 模板,即使它们使调用代码 ( foo(foo)
) 看起来不那么简洁,但仍然是有限的。
C 风格的答案显示,如何在不强制转换的情况下删除类型信息,或者其他类似的技巧当然很有趣,但不会被接受。
java - Java中的代表地图
我正在尝试为交互式 Java 程序做一个非常简单的命令行库。您启动 Java 程序,它会提示您输入命令。语法是:
例如:
在这里action = "addUser", object_1 = "name", object_2 = "John Doe", object_3 = "age", object_4 = "42"
。
动作之后的一切都是对象(即动作使用对象)。您可以看到动作和对象是简单的字符串。如有必要,对象字符串也可以转换为数字。
我的计划是,这个命令行库的用户将简单地创建方法(属于任何合适的 Java 对象)并将每个方法分配给特定的操作。命令行中的对象成为用户分配的方法的参数。为上述示例实现方法的合适类是:
当用户键入命令时,程序员分配的相应函数会被调用,并使用命令行中指定的参数。
我知道 Java 没有函数指针(如 C)或委托(如 C#),实现回调的方法是通过接口,但是,我不知道在这种情况下如何使用接口。我看到的接口问题是它们有:
- 要实现的固定数量的功能
- 要实现的功能有一个固定的声明。
(1) 的问题是我的库的用户可能决定实现任意数量的功能,以实现他想要支持的任意数量的操作。(2) 的问题是用户希望分配具有描述性名称的函数,例如 addUserHandler() 用于“addUSer”操作。
如果 Java 有委托或函数指针,我只需在字符串(表示操作)和委托(用于程序中操作的实际实现)之间创建一个映射。我想我可以用反射来模拟委托,但它很血腥而且我失去了类型安全性,因为我必须对类和方法使用字符串名称。有没有更好的办法?
谢谢,
c++ - 如何通过它们的派生类型比较两个指向对象的指针?
我有以下类层次结构:
我应该如何编写 Base::equal(Base *) 函数来比较 Derived4 和类似的类?它们没有数据字段,所以只检查实际对象是否属于同一个派生类。
以及如何编写 Derived1::equal(Base) - Derived2 和 Derived3 相似,它们没有任何数据字段,应该通过 Derived1 中的数据字段进行比较并检查对象是否来自同一个派生类?
更新:我想要这个,因为我不想为每个派生类编写相同的函数,例如:
c++ - C++ 函数指针作为静态成员
我想不出将函数指针声明为静态成员的语法。
g++ 输出错误“无法声明指向‘void’成员的指针”。我假设我需要用括号做一些事情,但 void A::(*cb) = NULL 也不起作用。
c++ - 如何从二进制数据中调用函数
我有一些二进制数据,其中包含一堆函数并想调用其中一个。我知道这些函数的签名以及相对于文件开头的偏移量。调用约定是默认的:__cdecl
. 该文件已加载到具有执行权限的内存页面中。
例如(A
, B
,C
是某些类型)
我怎样才能指定myOffset
指向myFunction
?
c++ - 在函数指针之间转换
我目前正在使用 Don Clugston 的 fastdelegates 实现计时器/回调系统。(见http://www.codeproject.com/KB/cpp/FastDelegate.aspx)
这是起始代码:
好的,但是现在,我希望用户能够子类TimerContext
化以存储并将他自己的结构发送到回调。这里的目的是防止用户不得不低调TimerContext
自己
如您所料,GCC 不会让我这样做 :)
所以现在我的问题是:如果我强制演员使用reinterpret_cast
,它会起作用,但它会安全吗?
PS:这些是时间关键的回调,重的面向虚拟的解决方案被认为是不切实际的:/