C ++中的信号:使用成员函数
|
我对
signal()
有疑问:
这段代码可以很好地编译:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void terminate( int param )
{
printf ( \"Terminating program...\\n\" );
exit( 1 );
}
int main()
{
signal( SIGTERM, terminate );
return 0;
}
但是,以下代码将引发此错误:
g++ -Wall -c -g goober.cpp
goober.cpp: In member function `void GOOBER::yarrgh()\':
goober.cpp:5: error: argument of type `void (GOOBER::)(int)\' does not match `
void (*)(int)\'
make: *** [goober.o] Error 1
goober.h:
#ifndef GOOBER_H
#define GOOBER_H
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
class GOOBER {
public:
GOOBER(){}
~GOOBER(){}
void yarrgh();
void terminate( int param );
};
#endif
goober.cpp:
#include \"goober.h\"
void GOOBER::yarrgh()
{
signal( SIGTERM, terminate );
}
void GOOBER::terminate( int param )
{
printf( \"Terminating program...\\n\" );
exit( 1 );
}
driver.cpp:
#include \"goober.h\"
using namespace std;
int main()
{
GOOBER G;
G.yarrgh();
return 0;
}
除了在成员中调用“ 0”以外,我看不出代码有什么区别。任何想法出什么事了,以及如何解决?
没有找到相关结果
已邀请:
4 个回复
襄挟款籍
函数声明为
:
这是因为作为非静态成员函数,,7ѭ函数希望传递(隐藏的)
参数以指向对象的某些实例。由于信号机制对此一无所知(或者对C ++几乎不了解),因此需要使用
函数,以便没有隐藏的
参数。
骨乏唯瓜
参数,该参数由调用者提供(隐式提供)。 C API无法执行此操作。
攫怂绵十
旅牢斯讲