我是 C++ 新手,也是 Codelite 新手,也是 wxCrafter 新手。我正在尝试构建一些 GUI 应用程序,但我对 C++ 中的对象传递感到困惑。我花了几个小时,我才明白一点。首先,要在 wxFrame/wxDialog 之间传递变量,我应该创建该类的实例。
在 frameA.cpp 中
void frameA::buttonAClicked() {
frameB * frameB1 = new frameB(NULL);
frameB1->connect(this);
}
在frameB.cpp中
void frameB::connect(frameA *upper) {
//now I can access frameA via upper
}
但是对于更复杂的情况(例如 10 帧),用户输入的值需要在帧之间共享。我认为最好让父母处理框架/对话框。由于所有类都是由 main.cpp 触发的,所以我认为 MainApp() 会是个好主意。所以我试着这样做:
主.cpp:
class MainApp : public wxApp {
public:
frameA * frameA1;
frameB * frameB1
//frameC, frameD, frameE etc.
MainApp() {}
virtual ~MainApp() {}
virtual bool OnInit() {
frameA1 = new frameA(NULL);
frameB1 = new frameB(NULL);
frameA1->connect(this);
frameB1->connect(this);
SetTopWindow(frameA);
return GetTopWindow()->Show();
}
};
在 frameA.cpp 和 frameB.cpp 中:
frameA::connect(wxApp *par) {
this->parent = par;
}
现在我可以通过 访问 MainAppparent
了,但是没有找到两个成员对象(一个是它本身)。我错过了什么吗?我对 C++ 真的很陌生。这是更好的方式(或正式的方式)吗?