static_cast funktioniert nicht mit Qt 5.3.0

Alles rund um die Programmierung mit Qt
Antworten
Wowbagger
Beiträge: 17
Registriert: 14. Juli 2007 21:12

static_cast funktioniert nicht mit Qt 5.3.0

Beitrag von Wowbagger »

Hallo,

der folgende Code funktioniert einwandfrei mit Qt 5.2.1, jedoch nicht mit Qt 5.3.0. Kann mir jemand sagen, woran das liegt, bzw. einen Workaround vorschlagen. Der Code ist vereinfacht aus einem Fremdprojekt.

Danke!

Code: Alles auswählen

    quint64 p = 1;
    const QFile::Permissions perm = static_cast< QFile::Permissions >( p );
Fehlermeldung:

Code: Alles auswählen

g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIE -DQT_CORE_LIB -I/opt/Qt/5.3/gcc_64/mkspecs/linux-g++ -I../test_static-cast -I/opt/Qt/5.3/gcc_64/include -I/opt/Qt/5.3/gcc_64/include/QtCore -I. -I. -o main.o ../test_static-cast/main.cpp
../test_static-cast/main.cpp: In function 'int main(int, char**)':
../test_static-cast/main.cpp:9:74: error: conversion from 'quint64 {aka long long unsigned int}' to 'QFlag' is ambiguous
     const QFile::Permissions perm = static_cast< QFile::Permissions >( p );
                                                                          ^
../test_static-cast/main.cpp:8:13: note: candidates are:
     quint64 p = 1;
             ^
In file included from /opt/Qt/5.3/gcc_64/include/QtCore/qglobal.h:1065:0,
                 from /opt/Qt/5.3/gcc_64/include/QtCore/qcoreapplication.h:45,
                 from /opt/Qt/5.3/gcc_64/include/QtCore/QCoreApplication:1,
                 from ../test_static-cast/main.cpp:1:
/opt/Qt/5.3/gcc_64/include/QtCore/qflags.h:63:29: note: QFlag::QFlag(ushort)
     Q_DECL_CONSTEXPR inline QFlag(ushort ai) : i(int(uint(ai))) {}
                             ^
/opt/Qt/5.3/gcc_64/include/QtCore/qflags.h:62:29: note: QFlag::QFlag(short int)
     Q_DECL_CONSTEXPR inline QFlag(short ai) : i(int(ai)) {}
                             ^
/opt/Qt/5.3/gcc_64/include/QtCore/qflags.h:61:29: note: QFlag::QFlag(uint)
     Q_DECL_CONSTEXPR inline QFlag(uint ai) : i(int(ai)) {}
                             ^
/opt/Qt/5.3/gcc_64/include/QtCore/qflags.h:60:29: note: QFlag::QFlag(int)
     Q_DECL_CONSTEXPR inline QFlag(int ai) : i(ai) {}
                             ^
/opt/Qt/5.3/gcc_64/include/QtCore/qflags.h:108:29: note: initializing argument 1 of 'QFlags<T>::QFlags(QFlag) [with Enum = QFileDevice::Permission]'
     Q_DECL_CONSTEXPR inline QFlags(QFlag f) : i(f) {}
                             ^
../test_static-cast/main.cpp:9:30: warning: unused variable 'perm' [-Wunused-variable]
     const QFile::Permissions perm = static_cast< QFile::Permissions >( p );
                              ^
Makefile:502: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: static_cast funktioniert nicht mit Qt 5.3.0

Beitrag von Christian81 »

Er kann sich einfach nicht entscheiden wie er das quint64 behandeln soll - entweder als ushort, short, uint oder int - wo ist das Problem?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Wowbagger
Beiträge: 17
Registriert: 14. Juli 2007 21:12

Re: static_cast funktioniert nicht mit Qt 5.3.0

Beitrag von Wowbagger »

Christian81 hat geschrieben:Er kann sich einfach nicht entscheiden wie er das quint64 behandeln soll - entweder als ushort, short, uint oder int - wo ist das Problem?
Was verwendet er denn, wenn ich mit Qt 5.2.1 kompiliere?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: static_cast funktioniert nicht mit Qt 5.3.0

Beitrag von Christian81 »

Keine Ahnung - dort gibt es vielleicht nur einen ctor den er casten könnte - schau doch einfach nach welche ctors QFlags in Qt 5.2 hat.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten