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 );
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