私は C++ が初めてで、codelite も初めてで、wxCrafter も初めてです。いくつかの GUI アプリを作成しようとしていますが、C++ でのオブジェクト パススルーについて混乱しています。私は数時間を費やしましたが、それについて少し理解できました。まず、wxFrame/wxDialog 間で変数を渡すには、そのクラスのインスタンスを作成する必要があります。
フレーム内A.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;
}
経由で MainApp にアクセスできるようになりましparent
たが、2 つのメンバー オブジェクト (1 つはそれ自体) が見つかりませんでした。私は何かを逃したのですか?私はC ++が初めてです。それはより良い方法(または正式な方法)ですか?