Seite 1 von 1

merkwürdiges Problem mit QMap

Verfasst: 11. Mai 2006 18:21
von prof_maad
Hi alle miteinander,

ich habe derzeit ein sehr befremdliches Problem mit QMap.

Ich habe folgendes Header-File:

Code: Alles auswählen

# include <QObject>
# include <QString>

# include "paintstructs.h" //Hier wird der Struct "continent" definiert

class QString;

template <typename, typename>
class QMap;

class XMLParser : public QObject
{

	Q_OBJECT
	
	public:
		XMLParser(QObject *parent = 0);
	
        public slots:
        QMap<QString,continent*> getWorldMap();

};

Wenn ich mein Program compiliere, compiliert er alle Header- und Sourcefiles 1A.

Erst beim zum obigen Header gehörenden MOC-File meckert er folgendes:
release\moc_xmlparser.o release\moc_xmlparser.cpp
release\moc_xmlparser.cpp: In member function `virtual int XMLParser::qt_metacall(QMetaObject::Call, int, void**)':
release\moc_xmlparser.cpp:68: error: variable `QMap<int, int> _r' has initializer but incomplete type
release\moc_xmlparser.cpp:68: error: invalid use of undefined type `struct QMap<int, int>'
release\/../xmlparser.h:13: error: declaration of `struct QMap<int, int>'
release\moc_xmlparser.cpp:69: error: invalid use of undefined type `struct QMap<int, int>'
release\/../xmlparser.h:13: error: declaration of `struct QMap<int, int>'
release\moc_xmlparser.cpp:72: error: variable `QMap<QString, continent*> _r' has initializer but incomplete type
release\moc_xmlparser.cpp:72: error: invalid use of undefined type `struct QMap<QString, continent*>'
release\/../xmlparser.h:13: error: declaration of `struct QMap<QString, continent*>'
release\moc_xmlparser.cpp:73: error: invalid use of undefined type `struct QMap<QString, continent*>'
release\/../xmlparser.h:13: error: declaration of `struct QMap<QString, continent*>'
mingw32-make[1]: *** [release\moc_xmlparser.o] Error 1
Wenn jemand eine Idee hat, was der Grund für diese merkwürdigen Fehlermeldungen sein kann, wäre ich für einen Hinweis sehr dankbar.

Ciao und Danke im Voraus,

Prof. MAAD

Verfasst: 11. Mai 2006 18:54
von Christian81
ich würde es mal mit '#include <QMap> versuchen.

'class QString;' ist nicht nötig da Du ja den Header inkludierst

Verfasst: 11. Mai 2006 19:00
von patrik08
du musst es doch irgendwie definieren...

typedef QMap<int, class getWorldMap> fieldMap;



sample db...

Code: Alles auswählen

typedef QMap<int, class DBBrowserIndex> indexMap;


class DBBrowserIndex
    {    
    public:
        DBBrowserIndex() : name( 0 ) { }
       DBBrowserIndex( const QString& wname,const QString& wsql )
            : name( wname), sql( wsql )
        { }
        QString getname() const { return name; }
        QString getsql() const { return sql; }
private:
        QString name;
        QString sql;
 };

------------------

if (err == SQLITE_OK){
		while ( sqlite3_step(vm) == SQLITE_ROW ){
			QString  val1, val2;
			val1 = QString((const char *) sqlite3_column_text(vm, 0));
			val2 = QString((const char *) sqlite3_column_text(vm, 1));
      idxmap[idxnum] = DBBrowserIndex(val1,val2);
      idxnum ++;
		}
		sqlite3_finalize(vm);
	}else{
		lastErrorMessage = QString ("could not get list of indices");
	}
------------------


Verfasst: 15. Mai 2006 08:59
von lepsai
patrik08 hat geschrieben:du musst es doch irgendwie definieren...
typedef QMap<int, class getWorldMap> fieldMap;

hat mit dem Problem nix zu tun...

Es fehlt nur #include <QMap>...