我是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++非常陌生。這是否有更好的方式(或正式的方式)去做?