[Gelöst] Umstellung Qt4 zu Qt5 operator Problem

Alles rund um die Programmierung mit Qt
Antworten
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

[Gelöst] Umstellung Qt4 zu Qt5 operator Problem

Beitrag von dazedly »

Hey Leute, ich stelle gerade unser riesen Projekt auf Qt5 um. Jetzt komme ich aber endgültig nicht mehr weiter.

Eine meiner Klassen kompiliert nicht mehr und ich sehe einfach nicht den "wahren" Grund.

Code: Alles auswählen

#pragma once
#include <QDebug>

class phonenumber
{
	public:
		phonenumber();
		int type;
		QString iac;
		QString number;
		static QString getTypeName(int type);
		QString getDisplayString();
		static bool isMobile(QString);
	
	friend QDataStream & operator << ( QDataStream & stream, const phonenumber& what )
	{
		stream << what.type << what.iac << what.number;
		return stream;
	};
	
	friend QDataStream & operator >> ( QDataStream & stream, phonenumber & what )
	{
		stream >> what.type >> what.iac >> what.number ;
		return stream;
	};

	friend bool operator==(const phonenumber& a, const phonenumber& b)
	{
		return (a.type == b.type && a.iac == b.iac && a.number == b.number);
	};
	
	friend QDebug operator<<(QDebug dbg, const phonenumber & a)
	{
		dbg.nospace() << "[phonenumber " << getTypeName(a.type) <<" " <<a.iac <<" " << a.number<<"]";
		return dbg.space();
	};
	static QList<phonenumber> fromSQLArray(QVariant v);
};
In file included from phonenumber.cpp:1:0:
In function ‘QDataStream& operator<<(QDataStream&, const phonenumber&)’:
phonenumber.h:17:18: error: ambiguous overload for ‘operator<<’ in ‘stream << what.phonenumber::type’
phonenumber.h:17:18: note: candidates are:
In file included from /usr/include/qt5/QtCore/qlocale.h:45:0,
from /usr/include/qt5/QtCore/qtextstream.h:48,
from /usr/include/qt5/QtCore/qdebug.h:50,
from /usr/include/qt5/QtCore/QDebug:1,
from phonenumber.h:2,
from phonenumber.cpp:1:
Ich verstehe nicht, warum das nicht gehen soll...
Zuletzt geändert von dazedly am 5. September 2013 14:01, insgesamt 2-mal geändert.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Umstellung Qt4 zu Qt5 operator Problem

Beitrag von RHBaum »

Hallo Jens :-)

er sagt dir, doppeldeutige aufloesung von QDataStream & operator<<(QDataStream&, const phonenumber&)

Code: Alles auswählen

 friend QDataStream & operator >> ( QDataStream & stream, phonenumber & what )
   {
      stream >> what.type >> what.iac >> what.number ;
      return stream;
   };
dieser operator ist unnötig und auch problematisch.
what wird doch nicht veraendert , warum dann diese nicht const version ?
jede nicht const referenz von phonenumber kann bei bedarf impliziet in eine constante referenz verwandelt werden.
nichtkonst brauchtest nur, wenn du im operator das what veraendern wolltest.

Ciao ...
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: Umstellung Qt4 zu Qt5 operator Problem

Beitrag von dazedly »

Danke für den Tipp, wurde geändert. Mein eigentliches Problem wurde auch gelöst, indem ich noch einmal ein"#include <QDataStream>" eingebaut habe :)
Antworten