Mehrfachvererbung
Verfasst: 6. November 2004 21:17
Sorry, habe beim erstenmal den Titel vergessen!
Also, nochmal:
Hi,
bin Anfänger in Sachen Qt-Programmierung
und habe gleich eine Frage:
Wie funktioniert Mehrfachvererbung in Qt?
Speziell:
Möchte nur so zur Übung eine neue Klasse LcdNeu erstellen
die von QLCDNumber und QSpinBox erbt.
Datei lcdneu.h:
#ifndef LCDNEU_H
#define LCDNEU_H
#include <qlcdnumber.h>
#include <qspinbox.h>
class LcdNeu : public QLCDNumber, QSpinBox
{
// Q_OBJECT
public:
LcdNeu(QWidget *parent, const char *name=0); //LcdNeu: ist der Klassenname
};
#endif
Datei lcdneu.cpp:
#include "lcdneu.h"
LcdNeu :: LcdNeu(QWidget *parent, const char *name) //LcdNeu: ist Klassenname
: QLCDNumber(parent, name)
{
}
Datei main.cpp:
#include <qapplication.h>
#include "lcdneu.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LcdNeu lcdDez(0);
lcdDez.setCaption(QObject::tr("LcdNeu"));
app.setMainWidget(&lcdDez);
lcdDez.show();
return app.exec();
}
Beim compilieren bekomme ich folgende Fehlermeldung:
*cd /Daten/Cpp/Qt3/NeueHeader/lcdneu && QTDIR="/usr/lib/qt3" gmake -k clean && QTDIR="/usr/lib/qt3" gmake -k
*rm -f lcdneu.o main.o
*rm -f *~ core *.core
*g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/include -I/usr/lib/qt3/include -o lcdneu.o lcdneu.cpp
*g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/include -I/usr/lib/qt3/include -o main.o main.cpp
*main.cpp: In function `int main(int, char**)':
*main.cpp:9: error: request for member `setCaption' is ambiguous
*/usr/lib/qt3/include/qwidget.h:282: error: candidates are: virtual void QWidget::setCaption(const QString&)
*/usr/lib/qt3/include/qwidget.h:282: error: virtual void QWidget::setCaption(const QString&)
*main.cpp:10: error: `QWidget' is an ambiguous base of `LcdNeu'
*main.cpp:11: error: request for member `show' is ambiguous
*/usr/lib/qt3/include/qwidget.h:347: error: candidates are: virtual void QWidget::show()
*/usr/lib/qt3/include/qwidget.h:347: error: virtual void QWidget::show()
*gmake: *** [main.o] Fehler 1
*gmake: Das Target »first« wurde wegen Fehlern nicht aktualisiert.
**** Beendet mit Status: 2 ***
wer kann mir da weiterhelfen??
Für eure Bemühungen vielen Dank im voraus.
Dave
Also, nochmal:
Hi,
bin Anfänger in Sachen Qt-Programmierung
und habe gleich eine Frage:
Wie funktioniert Mehrfachvererbung in Qt?
Speziell:
Möchte nur so zur Übung eine neue Klasse LcdNeu erstellen
die von QLCDNumber und QSpinBox erbt.
Datei lcdneu.h:
#ifndef LCDNEU_H
#define LCDNEU_H
#include <qlcdnumber.h>
#include <qspinbox.h>
class LcdNeu : public QLCDNumber, QSpinBox
{
// Q_OBJECT
public:
LcdNeu(QWidget *parent, const char *name=0); //LcdNeu: ist der Klassenname
};
#endif
Datei lcdneu.cpp:
#include "lcdneu.h"
LcdNeu :: LcdNeu(QWidget *parent, const char *name) //LcdNeu: ist Klassenname
: QLCDNumber(parent, name)
{
}
Datei main.cpp:
#include <qapplication.h>
#include "lcdneu.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LcdNeu lcdDez(0);
lcdDez.setCaption(QObject::tr("LcdNeu"));
app.setMainWidget(&lcdDez);
lcdDez.show();
return app.exec();
}
Beim compilieren bekomme ich folgende Fehlermeldung:
*cd /Daten/Cpp/Qt3/NeueHeader/lcdneu && QTDIR="/usr/lib/qt3" gmake -k clean && QTDIR="/usr/lib/qt3" gmake -k
*rm -f lcdneu.o main.o
*rm -f *~ core *.core
*g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/include -I/usr/lib/qt3/include -o lcdneu.o lcdneu.cpp
*g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -Wall -W -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -fPIC -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/include -I/usr/lib/qt3/include -o main.o main.cpp
*main.cpp: In function `int main(int, char**)':
*main.cpp:9: error: request for member `setCaption' is ambiguous
*/usr/lib/qt3/include/qwidget.h:282: error: candidates are: virtual void QWidget::setCaption(const QString&)
*/usr/lib/qt3/include/qwidget.h:282: error: virtual void QWidget::setCaption(const QString&)
*main.cpp:10: error: `QWidget' is an ambiguous base of `LcdNeu'
*main.cpp:11: error: request for member `show' is ambiguous
*/usr/lib/qt3/include/qwidget.h:347: error: candidates are: virtual void QWidget::show()
*/usr/lib/qt3/include/qwidget.h:347: error: virtual void QWidget::show()
*gmake: *** [main.o] Fehler 1
*gmake: Das Target »first« wurde wegen Fehlern nicht aktualisiert.
**** Beendet mit Status: 2 ***
wer kann mir da weiterhelfen??
Für eure Bemühungen vielen Dank im voraus.
Dave