C++ 需要调用gtk#u init函数,但不能从主函数-C++;
我用GTK3来创造一些东西。在教程中有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
#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);