Comment 4 for bug 25009

Revision history for this message
In , Xavier FACQ (xavier-facq) wrote : Re: Bug#337423: kdelibs4-dev: Ambigous overload for 'operator+' error in kresources/manager.h

Hi,

my build command containts -DQT_NO_CAST_ASCII -DQT_NO_ASCII_CAST and
the command line looks like :

Making all in ui
make[2]: Entering directory
`/home/xfacq/tmp/Dev/svndir/kdenetwork/kopete/libkopete/ui'
if /bin/sh ../../../libtool --silent --tag=CXX --mode=compile g++
-DHAVE_CONFIG_H -I. -I. -I../../.. -DKDE_NO_COMPAT -DQT_NO_COMPAT
-DQT_NO_CAST_ASCII -DQT_NO_ASCII_CAST -I../../../kopete/libkopete
-I../../../kopete/libkopete -I../../../kopete/libkopete/avdevice
-I../../../kopete/libkopete/ui -I../../../kopete/libkopete/ui
-I../../../kopete/libkopete/private -I/usr/include/kde
-I/usr/share/qt3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT
-D_REENTRANT -D_FILE_OFFSET_BITS=64 -Wno-long-long -Wundef -ansi
-D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion
-Wchar-subscripts -Wall -W -Wpointer-arith -O2 -Wformat-security
-Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions
-fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST
-DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -MT addresseeitem.lo -MD
-MP -MF ".deps/addresseeitem.Tpo" -c -o addresseeitem.lo
addresseeitem.cpp; \
then mv -f ".deps/addresseeitem.Tpo" ".deps/addresseeitem.Plo"; else rm
-f ".deps/addresseeitem.Tpo"; exit 1; fi

But this "article"
(http://lists.trolltech.com/qt-interest/2004-03/msg01059.html) explains
why it's interesting to have this defines.

Xavier

Josh Metzler a écrit :
> On Friday 04 November 2005 06:26 am, Xavier FACQ wrote:
>
>>Package: kdelibs4-dev
>>Version: 4:3.4.2-4
>>Severity: serious
>>Justification: no longer builds from source
>>
>>When i try to build kopete from svn or using sources from apt-get
>>source, it always failed with this error :
>>
>>/usr/include/kde/kresources/manager.h: In member function 'QStringList
>>KRES::Manager<T>::resourceTypeDescriptions() const':
>>/usr/include/kde/kresources/manager.h:338: error: ambiguous overload for
>>'operator+' in '" (" + ((const
>>KRES::Manager<T>*)this)->KRES::Manager<T>::mFactory->.KRES::Factory::typeDe
>>scription((* it))'
>>/usr/share/qt3/include/qstring.h:1072: note: candidates are: const
>>QString operator+(QChar, const QString&) <near match>
>>/usr/share/qt3/include/qstring.h:1080: note: const
>>QString operator+(char, const QString&) <near match>
>>make[2]: *** [addresseeitem.lo] Erreur 1
>>make[2]: Leaving directory
>>`/home/xfacq/tmp/Dev/svndir/kdenetwork/kopete/libkopete/ui'
>>make[1]: *** [all-recursive] Erreur 1
>>make[1]: Leaving directory
>>`/home/xfacq/tmp/Dev/svndir/kdenetwork/kopete/libkopete'
>>make: *** [all-recursive] Erreur 1
>
>
> Could you somehow have QT_NO_CAST_ASCII defined while building? Looking in
> qstring.h, it should be using this operator+ on line 1050:
> inline const QString operator+( const char *s1, const QString &s2 )
>
> Your build doesn't appear to be finding that, though. Since the definition is
> wrapped in a #ifndef QT_NO_CAST_ASCII, it seems like having that defined
> while building could cause your build failure.
>
> ...
>
> A quick grep -r through the kdenetwork sources shows that this appears to be
> defined in all the kopete Makefile.am's and Makefile.in's, but not in any
> other kdenetwork packages. So, I wonder how the buildd's built it?
>
> Josh
>
>