|
|
1
44
信号的第二个参数应该是一个指针,指向一个接受int并返回void的函数。你传递给信号的是一个指向
成员
函数接受int并返回void(其类型为
1-你的方法
2-你的方法不应该是静态的:如果你打算只使用一个实例的signal,你可以创建一个私有静态对象,并编写一个静态方法,简单地调用这个对象上的方法。有些东西沿着线
3-但是,如果你打算在多个实例中使用信号,事情会变得更加复杂。也许一个解决方案是将每个要操作的实例存储在一个静态向量中,并在每个实例上调用该方法:
在某个地方,打一个电话
但我认为,如果你最终使用最后一种解决方案,你可能应该考虑改变你的处理设计:-)! |
|
|
2
10
要传递指向方法的指针,它必须是静态方法,并且必须指定类名。 试试这个:
你也应该阅读Baget提供的链接 paragraph 33.2 in the C++ FAQ . |
|
|
3
3
实际上,C++信号处理程序不允许使用任何在C和C++中都不存在的工具(除了在C++11中它们可能使用原子),并且需要使用C链接。报价 C++11 draft n3242 第18.10节“其他运行时支持”[support.runtime](第8段),
(第29条是关于原子论的。) |
|
4
3
|
|
|
5
1
你发布的新答案的声誉比评论现有答案的声誉低,这确实看起来很疯狂,但我们做到了。
gekomad在2015年9月24日的回答是我用来解决问题的答案。值得指出的是,只有当只有一个实例时,这才会完全有效
而且,如果它对其他人有用,在几个答案中链接的常见问题解答的有效2018 URL是: http://www.cs.technion.ac.il/users/yechiel/c++-faq/memfnptr-vs-fnptr.html |
|
|
6
0
您可以使用单例模式
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |