c++ gtkmm 3.0如何访问argc,argv

标签 c++ gtkmm

我正在尝试为我的第一个模拟棋盘游戏的 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 初学者的任何帮助将不胜感激。

最佳答案

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]);

关于c++ gtkmm 3.0如何访问argc,argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909480/

相关文章:

c++ - c++ STL中deque是如何实现的

c++ - 如果语句导致循环没有完全运行? C++

c++ - 非阻塞 io_service::run

c++ - 如何测试 C++ 是否正在使用 openmp?

c++ - 更正 gtk、gtkmm 和 opencv 的 CMakeLists.txt 文件

macos - 适用于 Mac OS X 的 gtkmm-2.4-dev

c++ - 支持波兰语,无需使用 unicode 字符集进行编译

c++ - 如何将数据(字符串、整数或枚举成员)与 Gtk::ComboBoxText 项关联?

GTk (mm) 组合框的限制宽度

c++ - 在 Gtk+ (gtkmm) 中连接关键加速器