1
3
我想你在这里用的是X面。 不幸的是,xpaddwidgetcallback需要的回调形式为
您提供了类成员函数。如果这是一个全局函数,它就会工作。因此:
是正确的。 但是,必须有全局函数来实现这一点并不好,因为 noted in this thread 在X平面上。 要避免这种情况,请查看随X-Plane提供的包装类示例“xpcwidget.cpp”,或者使用tr1/boost bind 包装回调。
您还可以使函数成为问题函数
|
2
1
可以获取成员函数的地址,但需要将其分配给指向成员函数的指针:
成员函数指针只是指向成员函数的指针,但对该实例一无所知。若要调用它,则需要提供对象的实例:
因此,成员函数指针与常规函数指针不兼容。除非您调用的代码知道您正在传递成员函数,否则不能使用它们。 您需要做的是将非成员函数用作成员函数的thunk。类似:
这里的问题是如何访问正在使用的对象。您可以使用全局变量,尽管这不是很干净。理想情况下,此API将两个long中的任何一个用作上下文指针。在这种情况下,您将把指针传递给AboutWindow实例,然后将其返回:
|
3
1
您可以使用全局映射来调度回调,因为您具有xpwidgetid。
要添加回调,只需重新编写以首先填充映射
我假设xpwidgetid可以用作映射键,并且在widget id和aboutwindow实例之间有1到1的对应关系。如果不是这样,您可能需要修改这个解决方案。 |
4
1
由于各种原因,不能传递非静态(即绑定)成员函数的地址。你可以通过
然后:
|
5
1
通常回调至少接受一个传递给回调函数的用户指定参数。你只需要把它作为指向对象的指针。然后需要一个使用此指针并调用正确方法的C回调函数。
不幸的是,Xplane似乎没有这个功能。
不幸的是,它并没有使用void*参数,而是很长一段时间,所以在技术上它是不可移植的(但实际上它是可以工作的,尽管您应该在构建系统中添加一个检查)。
请参阅有关xpwidgetpropertyid的文档,以查看要使用的数字。我随机使用了1101种你应该做适当的研究:看这里 http://www.xsquawkbox.net/xpsdk/mediawiki/XPWidgetPropertyID |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |