我是C++的新手,并且是codelite的新手,也是wxCrafter的新手。我正在尝试构建一些GUI应用程序,但我对C++中的对象传递感到困惑。我花了几个小时,我只是了解了一点。首先,为了在wxFrame/wxDialog之间传递变量,我应该创建该类的一个实例。全局访问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()将是个好主意。于是,我就这样做:
main.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;
}
现在,我能够通过parent
访问MainApp,但没有找到两个成员对象(其中一个本身)。我错过了什么吗?我对C++非常陌生。这是否有更好的方式(或正式的方式)去做?