我非常害怕自己到了不归路的地步,觉得我的项目气球膨胀太大,无法跟上我目前的方式。
简而言之:
1)有许多图形屏幕(窗口),每个屏幕都是一个在自己的.cpp中定义的类,带有随附的.h标题w / public&私人减速。
2)我正在使用FLTK GUI工具包,所以当我离开屏幕时,我在其上调用“hide()”,我假设它是垃圾收集,然后我创建一个新的实例,无论屏幕是什么
我的问题是,如果屏幕(屏幕A允许调用它)创建另一个屏幕(屏幕B),那么我必须在屏幕A中包含屏幕B的头文件,并且我在屏幕A中创建一个指向屏幕B的全局指针。 CPP。
即。屏幕A的pseuodocode
#include "screenb.h"
ScreenB* screenb_ptr; // global
...
Bunch of Code, constructors, deconstructors, etc
...
void ScreenA::exit_and_make_screen_b()
{
ScreenA.hide();
screenb_ptr = new ScreenB();
}
这是最好的方法吗?我觉得它很邋(和内存泄漏?)我应该有一个类似虚拟.cpp / .h的东西,它跟踪一堆外部限定的指针;特别是因为有时我必须返回/转发屏幕(即可以从多个其他屏幕跳回主菜单屏幕)。任何建议表示赞赏!
答案 0 :(得分:2)
以下是一些建议:
例如:
screenManager->NavigateScreen( SCREEN_USER_PROFILE );
所有屏幕都可以从一个基类继承,该基类包含一个指向屏幕管理器的指针(它们通过构造函数获取或从静态单例实例中获取)。这样,您的所有屏幕都可以请求新的屏幕导航。
答案 1 :(得分:1)
GUI的一个好方法是模型 - 视图 - 控制器架构,您可以根据需要使用控制器来操作GUI。
这将表现为:
WindowManager wm;
void ScreenA::exit()
{
wm.registerExit(screenb_ptr);
wm.actOnExit();
}
或者某些类似的东西,你的窗口的中央协调器。这允许: