我想在构造函数中的类中分配一个GtkWidget
指针,但是我遇到了运行时错误。GTK +:无法初始化GtkWidget *数据成员
#include <gtk/gtk.h>
class MainWindowController
{
private:
GtkWidget * appWindow;
const gchar * windowTitle = "Window title";
public:
MainWindowController(GtkApplication * app);
~MainWindowController();
void show();
};
MainWindowController::MainWindowController(GtkApplication* app)
{
//this works
GtkWidget* window = gtk_application_window_new(app);
//not this
//appWindow = gtk_application_window_new(app);
/*adding it into the init list does not work either... I have tried
MainWindowController::MainWindowController(GtkApplication* app)
:appWindow(gtk_application_window_new(app)) {}
*/
gtk_window_set_title(GTK_WINDOW(appWindow), windowTitle);
gtk_window_set_default_size(GTK_WINDOW(appWindow), 500, 500);
}
以下错误被报道在终端:
(main:156): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(main:156): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(main:156): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(main:156): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
为什么没有这导致错误
GtkWidget* window = gtk_application_window_new(app);
但这呢?
appWindow = gtk_application_window_new(app);
更新:这是我的main.cpp
#include <gtk/gtk.h>
#include "mainWindowController.hpp"
static void
activate (GtkApplication* app,
gpointer user_data)
{
MainWindowController mainController(app);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), 0, 0);
g_object_unref (app);
return status;
}
我也跟编译:G ++ pkg-config --cflags gtk+-3.0
-o主要的main.cpp pkg-config --libs gtk+-3.0
-std =的C++ 0x
我们需要查看更多代码。您发布的内容没有任何问题。 – andlabs