2013-04-09 2 views
0

보드 게임을 시뮬레이트 할 첫 번째 gtk 애플리케이션의 올바른 구조를 얻으려고합니다. 하나의 명령 줄 인수는 파일 이름입니다. gtk 응용 프로그램 내에서이 파일을 읽습니다. main() 외부의 인수에 어떻게 액세스합니까?C++ gtkmm 3.0 argc, argv에 액세스하는 방법

다음은 내 main() 루틴입니다.

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

내가 오류는 다음과 같습니다 : 그 이벤트를 수신하기 때문에 ExampleWindow에있을 것입니다 내 논리의 대부분을 생각하고

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

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의 생성자입니다. 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) –

+0

"가능한"복제본이 도움이되지 않습니다. 전에 gtk 윈도우를 열어 본 후 명령 줄 인수를 얻으려고합니다. 그들은 또한 "최신 Gtk :: Application"이 명령 줄 구문 분석을 지원하지 않을 수도 있다고 말합니다. ExampleWIndow 생성자에 명령 줄 인수의 값을 전달할 수있는 방법이 있습니까? 나는 그것을 생성자의 인수로 만들려고했지만 모든 종류의 오류가 발생했습니다. –

답변

3

나는 잘못된 길을 가고 있는데, 왜 당신은 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

예, 위대한 작품입니다. 감사. –