2013-04-09 48 views
0

我正在嘗試爲我的第一個gtk應用程序獲取正確的結構,這將模擬棋盤遊戲。我有一個命令行參數,它是一個文件名。 我將在我的gtk應用程序中讀取此文件。 如何訪問main()之外的參數?C++ gtkmm 3.0如何訪問argc,argv

這是我的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,並將我的程序從繪圖細線示例中刪除。 https://developer.gnome.org/gtkmm-tutorial/3.4/sec-cairo-drawing-lines.html.en

任何幫助初學者在gtkmm將不勝感激。

+0

的可能重複的[gtkmm的3:使用的Gtk ::應用解析命令行(http://stackoverflow.com/questions/13852421/gtkmm-3-parse-command -line-with-gtkapplication) – 2013-04-09 18:23:36

+0

這種「可能的」重複是沒有用的。我試圖在打開gtk窗口之後獲得命令行參數,而不是之前。他們還說「更新的Gtk :: Application」可能不支持命令行解析。有沒有辦法將命令行參數的值傳遞給ExampleWIndow構造函數?我試圖把它作爲構造函數的參數,但得到各種錯誤。 – 2013-04-09 18:39:47

回答

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

是的,這個效果很好。謝謝。 – 2013-04-13 11:25:25