Alain Portal wrote:
Unfortunately, another fail occurs at line 18004 of build.log:
In file included from
/builddir/build/BUILD/piklab-0.15.10/src/devices/pic/xml/pic_xml_to_data.cpp:13:0:
/builddir/build/BUILD/piklab-0.15.10/src/xml_to_data/device_xml_to_data.h:
In member function 'void Device::XmlToData<DataType>::output() [with
DataType = Pic::Data]':
/builddir/build/BUILD/piklab-0.15.10/src/devices/pic/xml/pic_xml_to_data.cpp:740:1:
instantiated from here
/builddir/build/BUILD/piklab-0.15.10/src/xml_to_data/device_xml_to_data.h:64:7:
error: invalid conversion from 'const Pic::Data*' to 'Pic::Data*'
[-fpermissive]
/usr/lib64/qt-3.3/include/qvaluelist.h:530:14: error: initializing
argument 1 of 'QValueList<T>::iterator QValueList<T>::append(const
T&)
[with T = Pic::Data*, QValueList<T>::iterator =
QValueListIterator<Pic::Data*>]' [-fpermissive]
I'm unable to fix as I know nothing about C++.
Perhaps I have to report upstream?
That one is a bug in Piklab:
QValueList<DataType *> list;
for (QMap<QString, Data *>::const_iterator it=_map.begin(); it!=_map.end();
++it)
list.append(static_cast<const DataType *>(it.data()));
That code is trying to append a const DataType * to a QValueList<DataType *>,
i.e. a list of (non-const) DataType *. The const needs to go away:
- list.append(static_cast<const DataType *>(it.data()));
+ list.append(static_cast<DataType *>(it.data()));
To be clear (and in case upstream asks whether removing the const is valid):
QMap<QString, Data *>::const_iterator::data() returns a Data * const &, not a
const Data * & nor a const Data * const &. It is valid and safe to static_cast
a Data * const & to DataType *.
I committed the trivial fix for you:
http://pkgs.fedoraproject.org/gitweb/?p=piklab.git;a=blob;f=piklab-0.15.1...
and built piklab successfully. Please send the fix upstream.
Kevin Kofler