Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Surcharge de l'operateur +=

4 réponses
Avatar
Guillaume GOURDIN
Bonjour à tous, j'ai la classe suivante:

class LiwSet
{
public:

void operator+=(const LiwSet & p){ _x += p._x; _y += p._y; };
void operator-=(const LiwSet & p){ _x -= p._x; _y -= p._y; };

private:

int _x;
int _y;
};

Mais ce code ne compile pas avec g++. J'ai le message d'erreur suivant:
‘void LiwSet::operator+=(const LiwSet&)’ cannot be overloaded

Et je ne comprends pas pourquoi... Quelqu'un pourrait-il m'éclairer?

4 réponses

Avatar
Michel Decima
Bonjour à tous, j'ai la classe suivante:

class LiwSet
{
public:

void operator+=(const LiwSet & p){ _x += p._x; _y += p._y; };
void operator-=(const LiwSet & p){ _x -= p._x; _y -= p._y; };

private:

int _x;
int _y;
};

Mais ce code ne compile pas avec g++. J'ai le message d'erreur suivant:
‘void LiwSet::operator+=(const LiwSet&)’ cannot be overloaded


Quelle version de g++ ? Avec la 4.1.2, aucun probleme de compilation.

Avatar
Guillaume GOURDIN
Quelle version de g++ ? Avec la 4.1.2, aucun probleme de compilation.


4.1.1

Avatar
Jean-Marc Bourguet
Guillaume GOURDIN writes:

Bonjour à tous, j'ai la classe suivante:

class LiwSet
{
public:

void operator+=(const LiwSet & p){ _x += p._x; _y += p._y; };
void operator-=(const LiwSet & p){ _x -= p._x; _y -= p._y; };

private:

int _x;
int _y;
};

Mais ce code ne compile pas avec g++. J'ai le message d'erreur suivant:
void LiwSet::operator+=(const LiwSet&) cannot be overloaded

Et je ne comprends pas pourquoi... Quelqu'un pourrait-il m'éclairer?


Je ne reproduis pas. Tu as essaye avec le code que tu nous a envoye?

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Fabien LE LEZ
On Thu, 09 Aug 2007 16:19:30 +0200, Guillaume GOURDIN
:

class LiwSet
{
public:

void operator+=(const LiwSet & p){ _x += p._x; _y += p._y; };


Normalement, ça s'écrit

LiwSet& operator+= (const LiwSet& p)
{
_x += p._x; _y += p._y;
return *this;
} // pas de point-virgule ici


Mais ce code ne compile pas avec g++. J'ai le message d'erreur suivant:
‘void LiwSet::operator+=(const LiwSet&)’ cannot be overloaded


Bizarre, le code tel que tu l'as donné est accepté par g++ 4.1.2,
Comeau (13/01/2004), et Borland C++ 5.5.