J'aimerais savoir si il est possible de ne plus employer une fonction amie
pour utiliser cet opérateur pour ma classe. Je pense que non, mais je
préfère être certain.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Stephane Wirtel writes:
J'aimerais savoir si il est possible de ne plus employer une fonction amie pour utiliser cet opérateur pour ma classe. Je pense que non, mais je préfère être certain.
Les opérateurs membres ont d'office l'argument de gauche (ou l'unique argument) du type de la classe.
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
J'aimerais savoir si il est possible de ne plus employer
une fonction amie pour utiliser cet opérateur pour ma
classe. Je pense que non, mais je préfère être certain.
Les opérateurs membres ont d'office l'argument de gauche (ou
l'unique argument) du type de la classe.
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
J'aimerais savoir si il est possible de ne plus employer une fonction amie pour utiliser cet opérateur pour ma classe. Je pense que non, mais je préfère être certain.
Les opérateurs membres ont d'office l'argument de gauche (ou l'unique argument) du type de la classe.
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
Loïc Joly
Stephane Wirtel wrote:
Bonjour à tous,
Je suis un peu ennuyer concernant la conception d'une surcharge de l'opérateur <<.
Pour le moment, j'ai ma class String et j'utilise une fonction amie pour surcharger <<. [...]
J'aimerais savoir si il est possible de ne plus employer une fonction amie pour utiliser cet opérateur pour ma classe. Je pense que non, mais je préfère être certain.
Tu peux aussi dans ta classe définir une fonction publique (éventuellement virtuelle) :
void print(std::ostream &os);
Et avoir une fonction libre operator<< qui appèlle cette fonction. Avantage : si tu a une hiérarchie de classe, et une fonction print virtuelle pure, tu peux t'assurer que toutes les classes dérivées implémentent l'affichage.
-- Loïc
Stephane Wirtel wrote:
Bonjour à tous,
Je suis un peu ennuyer concernant la conception d'une surcharge de
l'opérateur <<.
Pour le moment, j'ai ma class String et j'utilise une fonction amie pour
surcharger <<.
[...]
J'aimerais savoir si il est possible de ne plus employer une fonction amie
pour utiliser cet opérateur pour ma classe. Je pense que non, mais je
préfère être certain.
Tu peux aussi dans ta classe définir une fonction publique
(éventuellement virtuelle) :
void print(std::ostream &os);
Et avoir une fonction libre operator<< qui appèlle cette fonction.
Avantage : si tu a une hiérarchie de classe, et une fonction print
virtuelle pure, tu peux t'assurer que toutes les classes dérivées
implémentent l'affichage.
Je suis un peu ennuyer concernant la conception d'une surcharge de l'opérateur <<.
Pour le moment, j'ai ma class String et j'utilise une fonction amie pour surcharger <<. [...]
J'aimerais savoir si il est possible de ne plus employer une fonction amie pour utiliser cet opérateur pour ma classe. Je pense que non, mais je préfère être certain.
Tu peux aussi dans ta classe définir une fonction publique (éventuellement virtuelle) :
void print(std::ostream &os);
Et avoir une fonction libre operator<< qui appèlle cette fonction. Avantage : si tu a une hiérarchie de classe, et une fonction print virtuelle pure, tu peux t'assurer que toutes les classes dérivées implémentent l'affichage.
-- Loïc
James Kanze
Stephane Wirtel writes:
|> Je suis un peu ennuyer concernant la conception d'une surcharge de |> l'opérateur <<.
|> Pour le moment, j'ai ma class String et j'utilise une fonction amie |> pour surcharger <<.
|> J'aimerais savoir si il est possible de ne plus employer une |> fonction amie pour utiliser cet opérateur pour ma classe. Je pense |> que non, mais je préfère être certain.
Je dirais qu'en général, c'est plutôt rare d'avoir besoin que l'opérateur << soit un ami. Une classe comme String est peut-être l'exception, mais en général, ce que tu veux afficher, c'est la valeur telle qu'elle apparaît à l'utilisateur, c-à-d donc que les choses visibles d'une façon à autre à travers l'interface publique.
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
|> J'aimerais savoir si il est possible de ne plus employer une
|> fonction amie pour utiliser cet opérateur pour ma classe. Je pense
|> que non, mais je préfère être certain.
Je dirais qu'en général, c'est plutôt rare d'avoir besoin que
l'opérateur << soit un ami. Une classe comme String est peut-être
l'exception, mais en général, ce que tu veux afficher, c'est la valeur
telle qu'elle apparaît à l'utilisateur, c-à-d donc que les choses
visibles d'une façon à autre à travers l'interface publique.
--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
|> J'aimerais savoir si il est possible de ne plus employer une |> fonction amie pour utiliser cet opérateur pour ma classe. Je pense |> que non, mais je préfère être certain.
Je dirais qu'en général, c'est plutôt rare d'avoir besoin que l'opérateur << soit un ami. Une classe comme String est peut-être l'exception, mais en général, ce que tu veux afficher, c'est la valeur telle qu'elle apparaît à l'utilisateur, c-à-d donc que les choses visibles d'une façon à autre à travers l'interface publique.
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34