C++ 需要调用gtk#u init函数,但不能从主函数-C++;

C++ 需要调用gtk#u init函数,但不能从主函数-C++;,c++,gtk,gtkmm,C++,Gtk,Gtkmm,我用GTK3来创造一些东西。在教程中有 #include <gtk/gtk.h> int main(int argc, char* argv[]) { GtkWidget *window; gtk_init(&argc, &argv); gtk_window, gtk_container etc... MainProgram.h #include <gtk/gtk.h> #include "MainProgram.h" class Ma

我用GTK3来创造一些东西。在教程中有

#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
    GtkWidget *window;
    gtk_init(&argc, &argv);

gtk_window, gtk_container etc...
MainProgram.h

#include <gtk/gtk.h>
#include "MainProgram.h"
class MainProgram
{
public:
    MainProgram();
    ~MainProgram();

    void run();

    void initSystems();
...other not so important code goes inside
现在,当我尝试使用以下工具编译程序时:

g++ main.cpp MainProgram.cpp `pkg-config --cflags --libs gtk+-3.0`
我得到以下警告:

MainProgram.cpp: In member function ‘void MainProgram::initSystems()’:
MainProgram.cpp:22:12: error: ‘argc’ was not declared in this scope
  gtk_init(&argc, &argv);
            ^
MainProgram.cpp:22:19: error: ‘argv’ was not declared in this scope
  gtk_init(&argc, &argv);

有没有一种简单的方法可以从main.cpp中通过main函数传递这些地址?我这样做是为了让我的代码看起来更干净,并且尽量不让main.cpp文件过载:)

我忘了放两个函数来显示我的应用程序,你可以在MainProgram.cpp文件中看到,我做了标记。它在“文件”中的最后几行。

我忘了放两个函数来显示我的应用程序,你可以在MainProgram.cpp文件中看到,我做了标记。它在该“文件”中的最后几行。

您需要将
argc
argv
一直传递到
MainSystem()
。或者只传递两个参数的
NULL
;它所做的只是让GTK+检查它自己的一组命令行参数,如果你不打算使用GLib API,它只会破坏一切。无论如何,选择权在你。如果你不理解这意味着什么,你将需要学习C++,然后才能学习GTK+。你能告诉我吗?那是个打字错误;我的意思是
initSystem()
@andlabs Ok,但是我应该在
MainProgram MainProgram(&argc,&argv)
中传递&argc,&argv,重载构造函数并向下传递到initSystem(),或者我可以在
MainProgram.run中传递它们(&argc,&argv)
?您需要将
argc
argv
一直传递到
MainSystem()
。或者只传递两个参数的
NULL
;它所做的只是让GTK+检查它自己的一组命令行参数,如果你不打算使用GLib API,它只会破坏一切。无论如何,选择权在你。如果你不理解这意味着什么,你将需要学习C++,然后才能学习GTK+。你能告诉我吗?那是个打字错误;我的意思是
initSystem()
@andlabs Ok,但是我应该在
MainProgram MainProgram(&argc,&argv)
中传递&argc,&argv,重载构造函数并向下传递到initSystem(),还是可以在
MainProgram.run(&argc,&argv)
中传递它们?
g++ main.cpp MainProgram.cpp `pkg-config --cflags --libs gtk+-3.0`
MainProgram.cpp: In member function ‘void MainProgram::initSystems()’:
MainProgram.cpp:22:12: error: ‘argc’ was not declared in this scope
  gtk_init(&argc, &argv);
            ^
MainProgram.cpp:22:19: error: ‘argv’ was not declared in this scope
  gtk_init(&argc, &argv);