c++类中使用signal函数
发布日期:2021-09-12 06:44:49 浏览次数:2 分类:技术文章

本文共 544 字,大约阅读时间需要 1 分钟。

例子如下:

using namespace std;class test{public:    void a()    {        while ( 1 )        signal( SIGINT, change );    }    void change( int sag )     {        cout << "here\n";    }};int main(){    test t;    t.a();}

这样会报错

error: invalid use of non-static member function

因为signal的函数原型:

void (*signal(int signo , void (*func)(int)))(int);

signo:表示需要处理的信号;

func:是一个指向void funciont(int)类型的函数指针;
返回值:返回值是一个指向void function(int)类型的函数指针。


而调用类中的成员函数隐含了函数前的this指针,所以这样就会造成参数不匹配。

解决方法是:
1.把change()声明成静态函数,静态函数不适用this指针作为隐含参数
2.使用友元函数,这样既能访问类的成员自身又不是类的成员

转载地址:https://blog.csdn.net/weixin_36888577/article/details/79532009 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++类里初始化各种类型的数据成员
下一篇:快速排序

发表评论

最新留言

不错!
[***.144.177.141]2024年04月03日 21时13分59秒