【发布时间】:2014-12-29 18:26:14
【问题描述】:
我是 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() 会是个好主意。所以我尝试这样做:
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++ 真的很陌生。这是更好的方式(或正式的方式)吗?
【问题讨论】: