macro passed 2 arguments, but takes just 1

Alles rund um die Programmierung mit Qt
Antworten
blueSpirit
Beiträge: 10
Registriert: 16. Juli 2008 09:35

macro passed 2 arguments, but takes just 1

Beitrag von blueSpirit »

Hallo zusammen,

ich habe eine kurze Frage. Bisher konnte ich in C++ alle Probleme auch ohne Macros ganz gut loesen, nur hier komme ich nicht weiter: Um das QTest-Framework zu benutzen, muss man die benutzen Typen beim QMetaType-System registrieren, und das passiert ueber ein Macro.

Code: Alles auswählen

        Q_DECLARE_METATYPE( QList< QPair<Qt::Key,qint32> > );
Mein Problem dabei: Der Preprocessor verweigert bei QPair und QMap seine Mithilfe. Darf ich einem Macro keine Templates uebergeben? Bei dem hier geposteten Code bekomme ich immer folgende Fehlermeldung:

Code: Alles auswählen

DefaultEditorTest.cpp:22:52: macro "Q_DECLARE_METATYPE" passed 2 arguments, but takes just 1
DefaultEditorTest.cpp:22: error: ISO C++ forbids declaration of ` Q_DECLARE_METATYPE' with no type
Was mache ich falsch und gibt es eine Moeglichkeit, trotzdem einem Macro ein Template zu uebergeben?

Vielen Dank schonmal,

Charly
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

So sollte es funktionieren:

Code: Alles auswählen

typedef QList< QPair<Qt::Key,qint32> > mytype;
Q_DECLARE_METATYPE( mytype ); 
blueSpirit
Beiträge: 10
Registriert: 16. Juli 2008 09:35

Beitrag von blueSpirit »

ja, stimmt... wieso bin ich nicht selbst drauf gekommen. Ist eigenltich mein Preprozessor buggy, oder sind Templates in Macros (wegen der C-Vergangenheit) nicht erlaubt?

Vielen Dank und schoene Gruesse an meine alte Heimat Landshut :)

Charly
Antworten