gelöst: Fehlermeldung expected init-declarator

Alles rund um die Programmierung mit Qt
Antworten
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

gelöst: Fehlermeldung expected init-declarator

Beitrag von mikro »

hi,
ich versuche eine Klasse mit dem Singleton-Pattern zu schreiben und eigentlich schreibe ich nur von funktionierenden Klassen ab:

Code: Alles auswählen

Deklaration:
class cConstants {
public:
	static cConstants* self();
    QString getArtBez(int);
    int getArtID(QString);
private:
    cConstants();
    static QPointer<cConstants> _self;
    QVector<QString> eigenschaftsArten;
}

Code: Alles auswählen

Implementierung:
#include "constants.h"

QPointer<cConstants> cConstants::_self = 0L;
//
cConstants* cConstants::self() {
    if ( !_self )
        _self = new cConstants();
    return _self;
}

cConstants::cConstants() {
//
}

QString cConstants::getArtBez(int id) {
    return eigenschaftsArten[id];
}

int cConstants::getArtID(QString value) {
    return eigenschaftsArten.indexOf(value);
}
aus irgendeinem Grund kriege ich dabei diese Fehlermeldung:
Makefile.Debug:372: warning: overriding commands for target `build\.rcc\qrc_WERTer.cpp'
Makefile.Debug:323: warning: ignoring old commands for target `build\.rcc\qrc_WERTer.cpp'
src\constants.cpp:4: error: expected init-declarator before "cConstants"
src\constants.cpp:4: error: expected `,' or `;' before "cConstants"
src\constants.cpp:7: instantiated from here
C:\Qt\4.1.3\include\QtCore\..\..\src\corelib\kernel\qpointer.h:58: error: invalid static_cast from type `QObject*' to type `cConstants*'
src\constants.cpp:8: instantiated from here
C:\Qt\4.1.3\include\QtCore\..\..\src\corelib\kernel\qpointer.h:48: error: comparison between distinct pointer types `QObject*' and `cConstants*' lacks a cast
C:\Qt\4.1.3\include\QtCore\..\..\src\corelib\kernel\qpointer.h:48: error: no matching function for call to `QMetaObject::changeGuard(QObject**, cConstants*&)'
C:\Qt\4.1.3\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h:257: note: candidates are: static void QMetaObject::changeGuard(QObject**, QObject*)
mal abgesehen davon, dass ich keine Ahnung habe, was er mit dem overriding commands will - das hat er schon länger und kompiliert trotzdem was ich erwarte. Aber was sollen mir bitte die Fehlermeldungen sgen??
Zuletzt geändert von mikro am 13. Juni 2006 10:33, insgesamt 1-mal geändert.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ich begreife langsam den compiler error ...

QMetaObject:: immer ... oder fast immer fehlt den Q_OBJECT

Die bedeutung von Q_OBJECT kenne ich nicht ... doch wenn mann ableitet oder mit pointer arbeitet ... muss immer eine soche macro sein...

auch eigene classen

Code: Alles auswählen

class Xslt_Converter : public QObject
{
    Q_OBJECT
    
public:

aber public QObject kann nur einmal vorkommen in der ableitungen....
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

stimmt, ein paar der Fehlermeldungen beruhten darauf, dass man QPointer nur mit Q_Objects verwenden kann, d.h. ich muss nicht nur das Q_OBJECT-Makro ergänzen, sonden die Klasse auch von QObject ableiten.
Das habe ich jetzt beides gemacht, aber die error: expected init-declarator before "cConstants" - Meldung bleibt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Es fehlt ein Semikolion nach der Klassendeklarartion - hatten wir vor kurzem schon einmal.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

stimmt, das wars. DANKE
und das war sogar noch für einen andere genauso skurrile Fehlermeldung an einer anderen Stelle verantwortlich die ich mir genausowenig erklären konnte.
ich hatte halt die Gerüste aller anderen Klassen mit einem Wizard erstellen lassen und immer das Semikolon übersehen :oops:
C++ gibt aber auch teils unverständliche Fehlermeldungen *Grummel* da lob ich mir doch PHP *Seufz*
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Immer wenn solche komischen Fehlermeldungen kommen sollte man auf das Semikolion nach den Klassendeklarationen schauen - das ist mir schon so oft passiert und immer wieder kam eine andere (ist aber auch schwer für den Compiler an dieser Stelle das Problem zu erkennen, denke ich zumindest:

Code: Alles auswählen

class MyClass{
 ...
};

MyClass MyInstatiatedClass;
oder eben

class MyClass{
 ...
} MyInstatiatedClass;
--> der Compiler weiss nicht was der Programmierer wollte.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten