Qt4: kleines parameterproblem von einem anfänger



  • class unit_type_HQ : public QWidget
    {
    public:
    	unit_type_HQ(QWidget *parent = 0, QStringList units);
    };
    
    unit_type_HQ::unit_type_HQ(QWidget *parent, QStringList units) : QWidget(parent)
    {
    	QLabel *label_unit_name = new QLabel(tr("Einheit:"));
    	QLabel *label_unit_profile = new QLabel(tr("Profil:"));
    	QLabel *label_unit_pt = new QLabel(tr("Kosten:"));
    
    	QComboBox *unit_name = new QComboBox(this);
    	//unit_name->addItem(units);
    
    	QVBoxLayout *mainLayout = new QVBoxLayout;
    	mainLayout->addWidget(label_unit_name);
    	mainLayout->addWidget(unit_name);
    
    	mainLayout->addWidget(label_unit_profile);
    
    	mainLayout->addWidget(label_unit_pt);
    
    	setLayout(mainLayout);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////
    
    class MyBoardWDG : public QWidget
    {
    private:
    	QTabWidget *main_tab;
    public:
            MyBoardWDG(QWidget *parent = 0);
    };
    
    MyBoardWDG::MyBoardWDG(QWidget *parent) : QWidget(parent)
    {
    	QStringList qstrlst;	//implementiere noch die liste um daten einzulesen
    
    	main_tab = new QTabWidget(this);
    	main_tab->addTab(new unit_type_HQ(0, qstrlst), tr("HQ"));
    }
    ////////////////////////////////////////////////////////////////////////////////////////////
    
    int main(int argc, char *argv[])
    {
    	QApplication app(argc, argv);
    
    	MyBoardWDG widget;
    	widget.resize(300, 200);
    	widget.show();
    
    	return app.exec();
    }
    

    da bekomme ich ein schönes

    dgd.cpp:38: error: default argument missing for parameter 2 of ‘unit_type_HQ::unit_type_HQ(QWidget*, QStringList)’
    

    ich verstehe nicht warum. wie muss es richtig aussehen? wollt mir ne kleine qt-widget-datenbank-gui basteln um was von qt zu lernen, aber es hapert wahrscheinlich an grundlagen 😞



  • So muss es richtig sein.

    class unit_type_HQ : public QWidget
    {
    public:
        unit_type_HQ(QWidget *parent, QStringList units);
    };
    

    Wenn du ein Default Argument angiebst müssen alle Nachfolgenden Argumente auch Defaults haben. Also bleibt als Alternative noch:

    class unit_type_HQ : public QWidget
    {
    public:
        unit_type_HQ(QStringList units, QWidget *parent = 0);
    };
    


  • achso, danke! dass wusst ich noch nicht. ich finde das ist eine dumme eigenheit von c 😞



  • dgrat schrieb:

    achso, danke! dass wusst ich noch nicht. ich finde das ist eine dumme eigenheit von c 😞

    Das ist kein "Eigenheit" von C sondern von C++. Das ist nötig, damit der Compiler weis, welche Argumente weggelassen wurden. Es gibt sicher noch andere möglichkeiten, das herrauszufinden, aber dann muss der Programmierer auf bestimmte Weise selber angeben, welche Argumente er frei lässt und welche nicht.


Anmelden zum Antworten