[C++] operateur inconnue
Char Snipeur
Messages postés
9813
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Jolkdarr -
Jolkdarr -
Bj à tous
Voila, j'ai rencontrer sur pas mal de sources l'opérateur "^"(dont un bouquin de Stroustrup) et je ne sais pas à quoi il sert...
si je l'utilise le compilo me renvoi une erreur :
nvalid operands of types `double' and `double' to binary `operator^'
et impossible de le surcharger, le compilo renvoi aussi une erreur...
est-ce que quelqu'un a des informations la dessus? car il pourrai être bien utile ce symbole pour faire du produit scalaire ou vectoriel ou de convolution.
Salutation !
Char Snipeur
Voila, j'ai rencontrer sur pas mal de sources l'opérateur "^"(dont un bouquin de Stroustrup) et je ne sais pas à quoi il sert...
si je l'utilise le compilo me renvoi une erreur :
nvalid operands of types `double' and `double' to binary `operator^'
et impossible de le surcharger, le compilo renvoi aussi une erreur...
est-ce que quelqu'un a des informations la dessus? car il pourrai être bien utile ce symbole pour faire du produit scalaire ou vectoriel ou de convolution.
Salutation !
Char Snipeur
A voir également:
- [C++] operateur inconnue
- Opérateur de réseau mobile - Guide
- 0466 quel opérateur - Forum Mobile
- 0668 quel opérateur ✓ - Forum Mobile
- 0758 quel opérateur - Forum Opérateurs & Réseaux mobiles
- 0650 quel opérateur - Forum Mobile
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 !
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