[C++] operateur inconnue
Fermé
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
-
23 sept. 2004 à 17:02
Jolkdarr - 24 sept. 2004 à 21:19
Jolkdarr - 24 sept. 2004 à 21:19
A voir également:
- [C++] operateur inconnue
- Opérateur unaire attendu ✓ - Forum Shell
- Freebox erreur video inconnue ✓ - Forum Vidéo/TV
- 0455 opérateur - Forum Orange
- Test de recrutement opérateur de saisie ✓ - Forum Études / Formation High-Tech
- Un opérateur peut il bloquer un téléphone pour non paiement - Forum Bouygues Télécom
5 réponses
Hello !
Exemple de définition d'opérateur ^ :
À noter qu'il n'est possible de redéfinir les opérateurs du langage. Par exemple, il est interdit de définir l'opérateur suivant :
Take care !
Exemple de définition d'opérateur ^ :
struct vecteur
{
int x, y, z;
};
inline
vecteur operator^(const vecteur& A, const vecteur& B)
{
vecteur R = { A.y * B.z - A.z * B.y,
A.x * B.z - A.z * B.x,
A.x * B.y - A.y * B.x};
return R;
}
int main()
{
vecteur A = { 1, 2, 3 };
vecteur B = { 2, 3, 0 };
vecteur P = A ^ B;
cout << P.x << " " << P.y << " " << P.z << endl;
}
À noter qu'il n'est possible de redéfinir les opérateurs du langage. Par exemple, il est interdit de définir l'opérateur suivant :
int operator^(int X, int Y); // NOK, déjà fourni par le langage
Take care !
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
24 sept. 2004 à 08:44
24 sept. 2004 à 08:44
Merci bien à vous deux. Une dernière petite precision.
Si on fait un typedef int entier
peut on redefinir
?
Salutation !
Char Snipeur
Si on fait un typedef int entier
peut on redefinir
entier operator^(entier x, entier y);
?
Salutation !
Char Snipeur
Hello !
Non, cela ne change rien. Typedef ne crée qu'un alias.
Pour s'en sortir :
Take care !
Non, cela ne change rien. Typedef ne crée qu'un alias.
Pour s'en sortir :
#include <iostream>
using namespace std;
struct entier
{
int X;
entier(int I) : X(I) {}
operator int() const { return X; }
};
inline
entier operator^(const entier& A, const entier& B)
{
return A + B;
}
inline
entier operator^(const entier& A, const int& B)
{
return A + B;
}
inline
entier operator^(const int& A, const entier& B)
{
return A + B;
}
inline
ostream& operator<<(ostream& Flux, const entier& V)
{
return Flux << V.X;
}
int main()
{
entier A = 1;
entier B = 2;
cout << (A ^ 3) << endl; // 4
cout << (7 ^ B) << endl; // 9
cout << (A ^ B) << endl; // 3
}
Take care !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question