Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
dans l'article , kanze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article 1161624458.579863.192040@m73g2000cwd.googlegroups.com, kanze
à kanze@gabi-soft.fr a écrit le 23/10/06 19:27 :
Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article , kanze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article , kan ze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article 1161624458.579863.192040@m73g2000cwd.googlegroups.com, kan ze
à kanze@gabi-soft.fr a écrit le 23/10/06 19:27 :
Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article , kan ze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
dans l'article
, kanze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
Pour utiliser un flux binaire il suffit de spécifier le openmodes
binaire comme suit:
fstream myStream(name, ios_base::binary);
dans l'article
1161624458.579863.192040@m73g2000cwd.googlegroups.com, kanze
à kanze@gabi-soft.fr a écrit le 23/10/06 19:27 :
Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
Pour utiliser un flux binaire il suffit de spécifier le openmodes
binaire comme suit:
fstream myStream(name, ios_base::binary);
dans l'article
, kanze
à a écrit le 23/10/06 19:27 :Piges pas :(
il faut que je derive un ostream qui implemente une nouvelle fonction
ostream& operator<<(maClass& a) ?
Non. L'abstraction de std::ostream, c'est un formattage texte,
et tu ne peux pas réelement t'en servir pour écrire dans un
fichier binaire. Il faut plutôt que tu développes un nouveau
type de flux, quelque chose, disons, du genre oxdrstream (avec
éventuellement des dérivées comme ofxdrstream). Et que tu le
dotes des operator<< qu'il faut pour formatter selon le format
voulu.
Un type derivé de ofstream suffit?
Pour utiliser un flux binaire il suffit de spécifier le openmodes
binaire comme suit:
fstream myStream(name, ios_base::binary);
"kanze" writes:
[...]
| > > Pendant la normalisation, cette injection a été supprimée, et à
| > > la place, on a dit que l'ADL régarde dans les classes
| > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > > classe n'a généralement pas de sens.
|
| > Je crois que l'intérêt principal de friend name injection, c'était
| > d'utiliser conjointement des classes templates. lorsque la classe
| > template était instanciée, les fonctions friend devenait alors
| > visible. On avait alors un contrôle de la visibilité de la fonction
| > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > paramètres apparentés à la classe.
|
| Tu parles du trick de Barton-Nackman, je crois.
J'avais eu une discussion avec David il y a un certain temps à propos
de cela. Si mes souvenirs sont bons, j'ai compris que la règle
actuelle (que je considère bancale) a été taillée sur mesure pour
préserver le « Barton-Nackman trick » puisque le bouquin avait un
certain succès.
"kanze" <kanze@gabi-soft.fr> writes:
[...]
| > > Pendant la normalisation, cette injection a été supprimée, et à
| > > la place, on a dit que l'ADL régarde dans les classes
| > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > > classe n'a généralement pas de sens.
|
| > Je crois que l'intérêt principal de friend name injection, c'était
| > d'utiliser conjointement des classes templates. lorsque la classe
| > template était instanciée, les fonctions friend devenait alors
| > visible. On avait alors un contrôle de la visibilité de la fonction
| > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > paramètres apparentés à la classe.
|
| Tu parles du trick de Barton-Nackman, je crois.
J'avais eu une discussion avec David il y a un certain temps à propos
de cela. Si mes souvenirs sont bons, j'ai compris que la règle
actuelle (que je considère bancale) a été taillée sur mesure pour
préserver le « Barton-Nackman trick » puisque le bouquin avait un
certain succès.
"kanze" writes:
[...]
| > > Pendant la normalisation, cette injection a été supprimée, et à
| > > la place, on a dit que l'ADL régarde dans les classes
| > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > > classe n'a généralement pas de sens.
|
| > Je crois que l'intérêt principal de friend name injection, c'était
| > d'utiliser conjointement des classes templates. lorsque la classe
| > template était instanciée, les fonctions friend devenait alors
| > visible. On avait alors un contrôle de la visibilité de la fonction
| > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > paramètres apparentés à la classe.
|
| Tu parles du trick de Barton-Nackman, je crois.
J'avais eu une discussion avec David il y a un certain temps à propos
de cela. Si mes souvenirs sont bons, j'ai compris que la règle
actuelle (que je considère bancale) a été taillée sur mesure pour
préserver le « Barton-Nackman trick » puisque le bouquin avait un
certain succès.
(Fabien Chêne) writes:
| Gabriel Dos Reis writes:
|
| > "kanze" writes:
| >
| > [...]
| >
| > | > > Pendant la normalisation, cette injection a été supprimée, et à
| > | > > la place, on a dit que l'ADL régarde dans les classes
| > | > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > | > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > | > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > | > > classe n'a généralement pas de sens.
| > |
| > | > Je crois que l'intérêt principal de friend name injection, c'était
| > | > d'utiliser conjointement des classes templates. lorsque la classe
| > | > template était instanciée, les fonctions friend devenait alors
| > | > visible. On avait alors un contrôle de la visibilité de la fonction
| > | > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > | > paramètres apparentés à la classe.
| > |
| > | Tu parles du trick de Barton-Nackman, je crois.
| >
| > J'avais eu une discussion avec David il y a un certain temps à propos
| > de cela. Si mes souvenirs sont bons, j'ai compris que la règle
| > actuelle (que je considère bancale) a été taillée sur mesure pour
| > préserver le « Barton-Nackman trick » puisque le bouquin avait un
| > certain succès.
|
| Comme indiqué par Daveed Vandevoorde dans son livre, le problème a été
| traité par Bill Gibbons:
|
| http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1996/N0878.pdf
Note que ce papier motive le changement pour que le
« Barton-Nackman trick » puisse marcher.
BTW, pusique nous sommes sur un groupe francophone, tu peux écrire
« David » (vraie orthographe) sans avoir peur qu'il soit prononcé
incorrectement. Il écrit « Daveed » pour forcer la bonne
prononciation.
fabien.chene@gmail.com (Fabien Chêne) writes:
| Gabriel Dos Reis <gdr@integrable-solutions.net> writes:
|
| > "kanze" <kanze@gabi-soft.fr> writes:
| >
| > [...]
| >
| > | > > Pendant la normalisation, cette injection a été supprimée, et à
| > | > > la place, on a dit que l'ADL régarde dans les classes
| > | > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > | > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > | > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > | > > classe n'a généralement pas de sens.
| > |
| > | > Je crois que l'intérêt principal de friend name injection, c'était
| > | > d'utiliser conjointement des classes templates. lorsque la classe
| > | > template était instanciée, les fonctions friend devenait alors
| > | > visible. On avait alors un contrôle de la visibilité de la fonction
| > | > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > | > paramètres apparentés à la classe.
| > |
| > | Tu parles du trick de Barton-Nackman, je crois.
| >
| > J'avais eu une discussion avec David il y a un certain temps à propos
| > de cela. Si mes souvenirs sont bons, j'ai compris que la règle
| > actuelle (que je considère bancale) a été taillée sur mesure pour
| > préserver le « Barton-Nackman trick » puisque le bouquin avait un
| > certain succès.
|
| Comme indiqué par Daveed Vandevoorde dans son livre, le problème a été
| traité par Bill Gibbons:
|
| http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1996/N0878.pdf
Note que ce papier motive le changement pour que le
« Barton-Nackman trick » puisse marcher.
BTW, pusique nous sommes sur un groupe francophone, tu peux écrire
« David » (vraie orthographe) sans avoir peur qu'il soit prononcé
incorrectement. Il écrit « Daveed » pour forcer la bonne
prononciation.
(Fabien Chêne) writes:
| Gabriel Dos Reis writes:
|
| > "kanze" writes:
| >
| > [...]
| >
| > | > > Pendant la normalisation, cette injection a été supprimée, et à
| > | > > la place, on a dit que l'ADL régarde dans les classes
| > | > > impliquées. Je crois qu'on s'était bien rendu compte que le code
| > | > > qui appelait foo(), ci-dessus, ne marcherait plus, mais il faut
| > | > > avouer qu'une amie qui ne prend pas de paramètre apparenté à la
| > | > > classe n'a généralement pas de sens.
| > |
| > | > Je crois que l'intérêt principal de friend name injection, c'était
| > | > d'utiliser conjointement des classes templates. lorsque la classe
| > | > template était instanciée, les fonctions friend devenait alors
| > | > visible. On avait alors un contrôle de la visibilité de la fonction
| > | > friend, via l'instanciation -- même si celle-ci n'avait pas de
| > | > paramètres apparentés à la classe.
| > |
| > | Tu parles du trick de Barton-Nackman, je crois.
| >
| > J'avais eu une discussion avec David il y a un certain temps à propos
| > de cela. Si mes souvenirs sont bons, j'ai compris que la règle
| > actuelle (que je considère bancale) a été taillée sur mesure pour
| > préserver le « Barton-Nackman trick » puisque le bouquin avait un
| > certain succès.
|
| Comme indiqué par Daveed Vandevoorde dans son livre, le problème a été
| traité par Bill Gibbons:
|
| http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1996/N0878.pdf
Note que ce papier motive le changement pour que le
« Barton-Nackman trick » puisse marcher.
BTW, pusique nous sommes sur un groupe francophone, tu peux écrire
« David » (vraie orthographe) sans avoir peur qu'il soit prononcé
incorrectement. Il écrit « Daveed » pour forcer la bonne
prononciation.
[...]
Je crois que l'intérêt principal de friend name injection, c'était
d'utiliser conjointement des classes templates. lorsque la classe
template était instanciée, les fonctions friend devenait alors
visible. On avait alors un contrôle de la visibilité de la fonction
friend, via l'instanciation -- même si celle-ci n'avait pas de
paramètres apparentés à la classe.
Tu parles du trick de Barton-Nackman, je crois.
L'injection du nom de l'ami a existé bien avant les templates. Elle
n'est en général pas nécessaire, dans le sens qu'on peut toujours
fournir une declaration dans la bonne portée, en plus de la
declaration de friend. Ce n'est qu'une commodité, rien de plus. Sauf
dans le cas d'un template où tu définis la fonction amie directement
dans la classe ; tu as alors une fonction (non template) par
instantiation de la classe (template), chose qu'on ne peut
difficilement faire autrement.
Et surtout, étant donné l'aspect ouvert de l'ensemble de ces
fonctions, on ne peut pas les définir (ni declarer) ailleurs.
[...]
Je crois que l'intérêt principal de friend name injection, c'était
d'utiliser conjointement des classes templates. lorsque la classe
template était instanciée, les fonctions friend devenait alors
visible. On avait alors un contrôle de la visibilité de la fonction
friend, via l'instanciation -- même si celle-ci n'avait pas de
paramètres apparentés à la classe.
Tu parles du trick de Barton-Nackman, je crois.
L'injection du nom de l'ami a existé bien avant les templates. Elle
n'est en général pas nécessaire, dans le sens qu'on peut toujours
fournir une declaration dans la bonne portée, en plus de la
declaration de friend. Ce n'est qu'une commodité, rien de plus. Sauf
dans le cas d'un template où tu définis la fonction amie directement
dans la classe ; tu as alors une fonction (non template) par
instantiation de la classe (template), chose qu'on ne peut
difficilement faire autrement.
Et surtout, étant donné l'aspect ouvert de l'ensemble de ces
fonctions, on ne peut pas les définir (ni declarer) ailleurs.
[...]
Je crois que l'intérêt principal de friend name injection, c'était
d'utiliser conjointement des classes templates. lorsque la classe
template était instanciée, les fonctions friend devenait alors
visible. On avait alors un contrôle de la visibilité de la fonction
friend, via l'instanciation -- même si celle-ci n'avait pas de
paramètres apparentés à la classe.
Tu parles du trick de Barton-Nackman, je crois.
L'injection du nom de l'ami a existé bien avant les templates. Elle
n'est en général pas nécessaire, dans le sens qu'on peut toujours
fournir une declaration dans la bonne portée, en plus de la
declaration de friend. Ce n'est qu'une commodité, rien de plus. Sauf
dans le cas d'un template où tu définis la fonction amie directement
dans la classe ; tu as alors une fonction (non template) par
instantiation de la classe (template), chose qu'on ne peut
difficilement faire autrement.
Et surtout, étant donné l'aspect ouvert de l'ensemble de ces
fonctions, on ne peut pas les définir (ni declarer) ailleurs.