Anfängerfrage: Werteübergabe



  • Ich programmiere mit QT.
    Mein Programm besteht aus 5 Dateien. MainWindow cpp/h, Control cpp/h und main.cpp. Die Header dateien sind jeweils included
    In den Header Dateien ist je eine Klasse definiert

    Nun habe ich in der Klasse Control einige Button/SpinBoxen/EditLines deklariert dessen Werte sich verändern sollen, wenn ich Funktion start() aus der Klasse MainWindow.
    Um in der Klasse MainWindow an meine Spinboxen die in der Klasse Control deklariert sind zu kommen bediene ich mich dem Punktoperator.
    zb:

    control.lineStartSpinBox->setRange(0, 100);
    

    dazu habe ich uner public in der header datei der Klasse Control

    Control control;
    

    eingefügt.

    der Compiler schmeisst mir folgenden Fehler aus, den ich nicht verstehen und somit auch nicht lösen kann.

    mainwindow.cpp:28: error: no matching function for call to ‘Control::Control()’
    control.h:41: note: candidates are: Control::Control(const QString&, QWidget*)
    control.h:35: note: Control::Control(const Control&a
    


  • Control hat wohl keinen lehren Konstruktor. Musst halt einen von den drunter angegebenen verwenden



  • ds schrieb:

    Control hat wohl keinen lehren Konstruktor. Musst halt einen von den drunter angegebenen verwenden

    dies hier ist mein Kontruktor

    Control(const QString &title, QWidget *parent = 0);
    

    und der Kompiler Errror liegt hier

    MainWindow::MainWindow()
    	: QMainWindow()
    

    es rasselt nur noch mehr Fehler wenn ich versuche zu verändern 😞



  • DerBert schrieb:

    ds schrieb:

    Control hat wohl keinen lehren Konstruktor. Musst halt einen von den drunter angegebenen verwenden

    dies hier ist mein Kontruktor

    Control(const QString &title, QWidget *parent = 0);
    

    Du hast keinen Defaultkonstruktor (Konstruktor ohne Parameterliste), daher kannst du auch kein Objekt ohne Parameter beim generieren.

    Control c; // <-- Ruft den Standardkonstruktor aus => existiert nicht => Fehler
    Control c("Titel"); // <-- Ruft deinen Konstruktor aus => okay
    

    cu André



  • asc schrieb:

    Control c; // <-- Ruft den Standardkonstruktor aus => existiert nicht => Fehler
    Control c("Titel"); // <-- Ruft deinen Konstruktor aus => okay
    

    cu André

    Ok Danke schonmal Ich habe einen Folgefehler oder einen neuen Fehler..

    error: ‘((MainWindow*)this)->MainWindow::c’ does not have class type
    

    den Konstrukor habe ich mit

    Control c(const QString &title);
    

    ausgerufen,denn

    Control c("Titel");
    

    ergabe eine weitere Fehlermeldung



  • DerBert schrieb:

    den Konstrukor habe ich mit

    Control c(const QString &title);
    

    ausgerufen,denn

    Control c("Titel");
    

    ergabe eine weitere Fehlermeldung

    Du kannst einen Konstruktor nicht mit einem Typ aufrufen, wenn muss es ein Wert sein. Ich kenne QString nicht, aber vielleicht probierst du es mal so:

    QString text = "Titel";
    Control c(text);
    

    Und wenn es hierbei einen Fehler gibt würde mich davon mal der genaue Wortlaut interessieren.

    cu André



  • asc schrieb:

    QString text = "Titel";
    Control c(text);
    

    Und wenn es hierbei einen Fehler gibt würde mich davon mal der genaue Wortlaut interessieren.

    cu André

    Ok Danke,
    Wenn ich den Konstruktor (wie oben genannt) in der Funktion aufrufe bekomme ich keinen Compiler fehler mehr.
    Doch leider funktioniert die Wertzuweisung nicht.

    Was vorher mit

    SpinBox->setValue(value);
    

    funktioniert hat. Funktioiert mit

    c.SpinBox->setValue(value);
    

    noch nicht.


Anmelden zum Antworten