Opérateur surdéfini dans une fonction membre
Geoffrey
-
Geoffrey -
Geoffrey -
Bonjour,
J'ai un problème que je n'arrive pas à résoudre dans un programme. Le voici (si vous avez besoin de plus d'informations sur le programme, dites-le moi car je ne vais pas l'écrire en entier ici) :
Après avoir déclaré une classe CPoint dont les données membres de type private sont : double m_x, double m_y et double m_z (il s'agit d'une classe permettant de créer des points de l'espace), j'ai surdéfini l'opérateur + comme suit :
CPoint CPoint :: operator + (CPoint &r_pointx)
{
CPoint point ;
point.m_x = (this->m_x + r_pointx.m_x) ;
point.m_y = (this->m_y + r_pointx.m_y) ;
point.m_z = (this->m_z + r_pointx.m_z) ;
return point ;
}
Cette fonction est bien évidemment une fonction membre. Lorsque je l'utilise dans la fonction main comme ci-dessous, cela fonctionne très bien :
CPoint point_somme = point_A + point_B ;
Mais je n'arrive pas à l'utiliser dans une fonction membre qui permet de calculer le point milieu d'un segment. Lorsque j'écris :
CPoint CPoint :: Point_milieu (CPoint &r_pointx) // Fonction retournant un objet de la classe CPoint
{
CPoint point = this-> + r_pointx ;
point.m_x /= 2. ;
point.m_y /= 2. ;
point.m_z /= 2. ;
return point ;
}
Le compilateur n'accepte pas l'instruction CPoint point = this-> + r_pointx ; et m'indique les erreurs suivantes :
error C2059: syntax error : '+'
error C2039: 'point' : is not a member of 'CPoint'
L'instruction CPoint point = this + r_pointx ; en lieu et place de celle ci-dessus ne fonctionne pas non plus et le compilateur me renvoit cette erreur :
error C2677: binary '+' : no global operator defined which takes type 'class CPoint' (or there is no acceptable conversion)
Voilà, est-ce que quelqu'un pourrait m'aider? Merci.
N.B. : je travaille avec Visual C++ 6.0 sous Windows XP
J'ai un problème que je n'arrive pas à résoudre dans un programme. Le voici (si vous avez besoin de plus d'informations sur le programme, dites-le moi car je ne vais pas l'écrire en entier ici) :
Après avoir déclaré une classe CPoint dont les données membres de type private sont : double m_x, double m_y et double m_z (il s'agit d'une classe permettant de créer des points de l'espace), j'ai surdéfini l'opérateur + comme suit :
CPoint CPoint :: operator + (CPoint &r_pointx)
{
CPoint point ;
point.m_x = (this->m_x + r_pointx.m_x) ;
point.m_y = (this->m_y + r_pointx.m_y) ;
point.m_z = (this->m_z + r_pointx.m_z) ;
return point ;
}
Cette fonction est bien évidemment une fonction membre. Lorsque je l'utilise dans la fonction main comme ci-dessous, cela fonctionne très bien :
CPoint point_somme = point_A + point_B ;
Mais je n'arrive pas à l'utiliser dans une fonction membre qui permet de calculer le point milieu d'un segment. Lorsque j'écris :
CPoint CPoint :: Point_milieu (CPoint &r_pointx) // Fonction retournant un objet de la classe CPoint
{
CPoint point = this-> + r_pointx ;
point.m_x /= 2. ;
point.m_y /= 2. ;
point.m_z /= 2. ;
return point ;
}
Le compilateur n'accepte pas l'instruction CPoint point = this-> + r_pointx ; et m'indique les erreurs suivantes :
error C2059: syntax error : '+'
error C2039: 'point' : is not a member of 'CPoint'
L'instruction CPoint point = this + r_pointx ; en lieu et place de celle ci-dessus ne fonctionne pas non plus et le compilateur me renvoit cette erreur :
error C2677: binary '+' : no global operator defined which takes type 'class CPoint' (or there is no acceptable conversion)
Voilà, est-ce que quelqu'un pourrait m'aider? Merci.
N.B. : je travaille avec Visual C++ 6.0 sous Windows XP
A voir également:
- Opérateur surdéfini dans une fonction membre
- Fonction si et - Guide
- Opérateur de réseau mobile - Guide
- Membre indisponible vinted - Guide
- 0785 quel operateur ✓ - Forum Mobile
- 06 44 67 quel opérateur - Forum Mobile