gpt4 book ai didi

c++ - 将成员函数传递给 std::signal

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:16 25 4
gpt4 key购买 nike

我有一个类 A,它有一个关闭所有已打开的套接字的关闭方法。

如果用户终止程序,我想要一个信号处理程序来关闭所有在运行时打开的套接字。我需要类似下面代码的东西,但当然,它不能这样工作。我试过这样的事情,

#include <csignal>

struct A
{
void shutdown() {}
int a = 0;
};

int main()
{
A a;
auto t = [&]()->void {a.shutdown();};
std::signal(SIGINT, t);
}

最佳答案

很遗憾,这无法完成。信号处理程序是一种过于原始的机制,无法支持任何可以满足您的目标的机制,即在类的特定实例上调用成员函数。

实现半相似的一种方法是让全局指针指向控件类的当前事件实例,并通过信号处理程序中的全局指针调用成员。

关于c++ - 将成员函数传递给 std::signal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50863780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com