2010-08-10 44 views
1

我想要學習C++,但我找不到,如果有可能以這種方式擴展一個類:類擴展的GtkWindow

main.cc

#include "mWindow.h" 
using namespace std; 
int main(int argc, char* argv[]) { 
    gtk_init(&argc, &argv); 
    mWindow win = mWindow(); 
    gtk_main(); 
    return 0; 
} 

mWindow.cc

#include "mWindow.h" 
mWindow::mWindow() { 
    gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    gtk_window_set_title (this, "my window"); 
    gtk_widget_show_all (GTK_WIDGET(this)); 
} 

mWindow.h

#ifndef MWINDOW_H_INCLUDED 
#define MWINDOW_H_INCLUDED 
#include <gtk/gtk.h> 
using namespace std; 
class mWindow : public GtkWindow { 
    public: 
     mWindow(); 
}; 
#endif 

回答

0

感謝, 我試圖用C庫,好像他們是C++。 這是我如何解決了gtkmm的: main.cc

#include <gtkmm/main.h> 
#include "examplewindow.h" 

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(argc, argv); 
    ExampleWindow window; 
    Gtk::Main::run(window); 
    return 0; 
} 

examplewindow.h

#ifndef GTKMM_EXAMPLEWINDOW_H 
#define GTKMM_EXAMPLEWINDOW_H 

#include <gtkmm-2.4/gtkmm.h> 

class ExampleWindow : public Gtk::Window { 
    public: 
     ExampleWindow(); 
}; 

#endif //GTKMM_EXAMPLEWINDOW_H 

examplewindow.cc

#include "examplewindow.h" 

ExampleWindow::ExampleWindow() { 
    set_title("Gtk::TextView example"); 
    set_border_width(5); 
    set_default_size(400, 200); 
    show_all_children(); 
} 

還添加命令成功完成,至少在Arch Linux上:

g++ $(pkg-config --cflags --libs gtkmm-2.4) main.cc examplewindow.cc examplewindow.h -o executable 

另一個小的跡象,我應該用作動態數組或矢量和hashmap?

2

我建議如果你想使用GTK +與C++相結合,即沒有必要嘗試推倒重來,並寫GTK +(這是一個C庫)自己的C++接口,你看看gtkmm的http://www.gtkmm.org/)。