0

ボード ゲームをシミュレートする最初の gtk アプリケーションの適切な構造を取得しようとしています。ファイル名である単一のコマンドライン引数があります。gtk アプリケーション内でこのファイルを読み取ります。main() の外で引数にアクセスするにはどうすればよいですか?

これが私の main() ルーチンです。

int main(int argc, char* argv[]) {
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
  ExampleWindow window;
return app->run(window);
}

ExampleWindow のコンストラクタは次のとおりです。

ExampleWindow::ExampleWindow() {
  Board bd = Board(argv[1]);
...

私が得るエラーは次のとおりです。

In constructor 'ExampleWindow::ExampleWindow()':
error: 'argv' was not declared in this scope

イベントをリッスンするため、私のロジックのほとんどは ExampleWindow にあると思います。Board クラスは、データ構造を保持する ExampleWindow コンストラクターでインスタンス化されます。Board クラスのコンストラクターは、そのコンストラクターへの引数としてファイル名を取り、記述ファイルを読み取り、ファイル入力に基づいてメンバー変数を設定します。

私はこれに何時間も費やしましたが、ドキュメントがまばらで紛らわしいことがわかりました。私は gtk 3.0 を使用しており、私のプログラムは Drawing Thin Lines の例に基づいています。 https://developer.gnome.org/gtkmm-tutorial/3.4/sec-cairo-drawing-lines.html.en

gtkmm の初心者のための助けをいただければ幸いです。

4

1 に答える 1

3

Mabye 私は間違った方向に進んでいますが、なぜウィンドウ クラスに argc/argv を渡さないのですか?

int main(int argc, char* argv[]) {
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv,     "org.gtkmm.example");
  ExampleWindow window(argc,argv);
return app->run(window);

}

ExampleWindow::ExampleWindow(int argc, char* argv[]) {
   Board bd = Board(argv[1]);
于 2013-04-10T13:01:19.957 に答える