Ableitung von gtkmm Label



  • Hallo,

    ich bin blutiger C++ und Gtkmm-Anfänger. Ich kriege einfach keine abgeleitete Label-Klasse dargestellt, könnt ihr mir sagen, wo der Fehler ist. Mit der Fehler-Meldung kann ich leider nix anfangen.

    src/guielements/Main.cpp: In function int main(int, char**)': src/guielements/Main.cpp:14: error: no matching function for call to
    Gtk::Frame::add(Label (&)())'
    /usr/include/gtkmm-2.4/gtkmm/container.h:153: error: candidates are: virtual
    void Gtk::Container::add(Gtk::Widget&)

    Und habe folgendes geschrieben:

    #include <gtkmm.h>
    #include <gtkmm/box.h>
    #include <gtkmm/frame.h>
    #include "Label.h"
    
    int main(int argc, char *argv[])
    {
        Gtk::Main kit(argc, argv);
        Gtk::Window window;  
        Gtk::HBox hbox(false, 5);
        Gtk::Frame frame("Normal Frame");
        Label::Label l();    
        window.add(hbox);  
        frame.add(l);  
        hbox.pack_start(frame, Gtk::PACK_SHRINK);
    //	l.show();
    //	window.show_all_children();
        frame.show();
        hbox.show(); 
        Gtk::Main::run(window);
        return 0;
    }
    
    // Label.cpp
    
    #include "Label.h"
    
    Label::Label(): Gtk::Label("Hello")
    {
    	;
    }
    
    Label::~Label()
    {
    	// TODO:
    }
    
    //Label.h
    #ifndef LABEL_H_
    #define LABEL_H_
    
    #include <gtkmm/label.h>
    #include <string>
    
    class Label : public Gtk::Label {
    
    	//Attention: Was ist mit Multiline-Label
    	public:
    
    		Label(); // Konstruktor
    		~Label(); // Dekonstruktor
    };
    
    #endif /*LABEL_H_*/
    


  • Label::Label l();
    

    Was machen die Klammern da 😃
    Dein Compiler denkt das wäre ne Funkitonsdeklaration...

    Mache es so:

    Label l;
    

    Das Laber:: brauchst du davor auch nicht.

    Und IMO ist dein Code irgendwie "schrääg" 😛
    Das kann man was schöner machen, schau dir mal das gtkmm-Book an...


Anmelden zum Antworten