0

现在我正在开发一个基于终端的应用程序,它利用了一些显示库。我的程序流程是这样的:

main.cpp
\ feature1.cpp
|
\feature2.cpp
|
\ feature3.cpp
|
\feature4.cpp

主类处于无限循环中,允许您选择四个功能之一。一旦被选中,它将进入该功能的无限循环,一旦该功能达到其退出状态,该无限循环将终止。退出后,我的程序返回到主循环并允许再次接收输入以选择另一个特征。

我遇到的问题是我在main.cpp文件中设置了一个信号来检测终端窗口何时调整大小。如果它低于某个大小,我想做点什么。同样,我想为用户可能使用的每个功能做一些不同的事情。我的信号调用如下所示:

signal(SIGWINCH, detectResize); //detectResize(int sig) handles resize

如何使信号目标成为与当前打开的功能相对应的正确功能?最初我尝试在每个调用的类中创建一个方法,handleResize()并且每次都会调用该signal()函数以将其更改为正确的类。例如:

if(feature1 is selected)
{
    signal(SIGWINCH, f1.handleResize);
    feature1 f1(); //start feature 1 loop
}

这不起作用,因为在创建对象之前我无法弄清楚如何传入f1.handleResize。我对 C++ 不太熟悉。有没有更好的方法来解决这个问题?如果是 Java,我正在考虑制作一个Resize接口(C++ 的类)并让每个功能都实现它。然后我可以通过一些全局变量跟踪正在使用的功能,并<feature>.handleResize()从. 像这样的事情是可能的,还是有更优雅的 C++ 方法?handleResize()main.cpp

4

0 回答 0