Bonjour,
Jean-Marc Bourguet wrote:Entre auto et hériter publiquement d'une classe comme vector<> qui n'a
pas été conçue pour, je sais ce que je préfèrer ais qu'on enseigne à ceux
qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticenc e quant Ã
l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les
paramètres références non constantes.
Je n'ai pas compris.
Bonjour,
Jean-Marc Bourguet wrote:
Entre auto et hériter publiquement d'une classe comme vector<> qui n'a
pas été conçue pour, je sais ce que je préfèrer ais qu'on enseigne à ceux
qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticenc e quant Ã
l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les
paramètres références non constantes.
Je n'ai pas compris.
Bonjour,
Jean-Marc Bourguet wrote:Entre auto et hériter publiquement d'une classe comme vector<> qui n'a
pas été conçue pour, je sais ce que je préfèrer ais qu'on enseigne à ceux
qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticenc e quant Ã
l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les
paramètres références non constantes.
Je n'ai pas compris.
Bonjour,
Jean-Marc Bourguet wrote:Plus précisément I est explicitement déclaré comme étant du type
const_iterator trouvé
par une recherche dans le contexte courant. On va chercher dans A::C(),
il n'y a probablement rien, on va chercher dans A, il n'y a probablement
rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitem ent déclaré
dans A fonctionne assez bien, mais décrit aussi peu la réalit é
que de considérer qu'il y en a un implicitement déclaré d ans A::C. Ãa
fonctionne jusqu'au moment où on se trouve dans un cas où la r echerche
s'arrête plus tôt (dans les templates par exemple), et celui q ui a ce
modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
J'ignore bien sûr s'il est dans "vector" ou encore plus loin dans la
hiérarchie
Bonjour,
Jean-Marc Bourguet wrote:
Plus précisément I est explicitement déclaré comme étant du type
const_iterator trouvé
par une recherche dans le contexte courant. On va chercher dans A::C(),
il n'y a probablement rien, on va chercher dans A, il n'y a probablement
rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitem ent déclaré
dans A fonctionne assez bien, mais décrit aussi peu la réalit é
que de considérer qu'il y en a un implicitement déclaré d ans A::C. Ãa
fonctionne jusqu'au moment où on se trouve dans un cas où la r echerche
s'arrête plus tôt (dans les templates par exemple), et celui q ui a ce
modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
J'ignore bien sûr s'il est dans "vector" ou encore plus loin dans la
hiérarchie
Bonjour,
Jean-Marc Bourguet wrote:Plus précisément I est explicitement déclaré comme étant du type
const_iterator trouvé
par une recherche dans le contexte courant. On va chercher dans A::C(),
il n'y a probablement rien, on va chercher dans A, il n'y a probablement
rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitem ent déclaré
dans A fonctionne assez bien, mais décrit aussi peu la réalit é
que de considérer qu'il y en a un implicitement déclaré d ans A::C. Ãa
fonctionne jusqu'au moment où on se trouve dans un cas où la r echerche
s'arrête plus tôt (dans les templates par exemple), et celui q ui a ce
modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
J'ignore bien sûr s'il est dans "vector" ou encore plus loin dans la
hiérarchie
Les cas où c'est sensé sont l'exception plutôt que la règle. En
général, l'héritage public concerne les classes entité (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiable,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
La question de fond est de savoir quelles sont les
invariants que la classe peut bien avoir qu'il n'est pas possible de
mettre à mal en la manipulant comme un vecteur?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Les cas où c'est sensé sont l'exception plutôt que la règle. En
général, l'héritage public concerne les classes entité (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiable,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
La question de fond est de savoir quelles sont les
invariants que la classe peut bien avoir qu'il n'est pas possible de
mettre à mal en la manipulant comme un vecteur?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Les cas où c'est sensé sont l'exception plutôt que la règle. En
général, l'héritage public concerne les classes entité (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiable,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
La question de fond est de savoir quelles sont les
invariants que la classe peut bien avoir qu'il n'est pas possible de
mettre à mal en la manipulant comme un vecteur?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Par ailleurs, je "potasse" en ce moment :
http://www.icce.rug.nl/documents/cplusplus/
C'est un cours dont le début est très prometteur.
Par ailleurs, je "potasse" en ce moment :
http://www.icce.rug.nl/documents/cplusplus/
C'est un cours dont le début est très prometteur.
Par ailleurs, je "potasse" en ce moment :
http://www.icce.rug.nl/documents/cplusplus/
C'est un cours dont le début est très prometteur.
Le 6 mars 2015, Jean-Marc Bourguet a écrit :Les cas où c'est sensé sont l'exception plutôt que la r ègle. En
général, l'héritage public concerne les classes entità © (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiab le,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
Peux-tu donner un exemple de classe entité ?
La question de fond est de savoir quelles sont les invariants que la
classe peut bien avoir qu'il n'est pas possible de mettre à mal en la
manipulant comme un vecteur?
Pas compris. Peux-tu détailler ?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Syntax error :-)
Le 6 mars 2015, Jean-Marc Bourguet a écrit :
Les cas où c'est sensé sont l'exception plutôt que la r ègle. En
général, l'héritage public concerne les classes entità © (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiab le,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
Peux-tu donner un exemple de classe entité ?
La question de fond est de savoir quelles sont les invariants que la
classe peut bien avoir qu'il n'est pas possible de mettre à mal en la
manipulant comme un vecteur?
Pas compris. Peux-tu détailler ?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Syntax error :-)
Le 6 mars 2015, Jean-Marc Bourguet a écrit :Les cas où c'est sensé sont l'exception plutôt que la r ègle. En
général, l'héritage public concerne les classes entità © (pas copiable,
présence de fonctions virtuelles) et pas les classes valeur (copiab le,
absence de fonctions virtuelles). vector est clairement dans la seconde
catégorie.
Peux-tu donner un exemple de classe entité ?
La question de fond est de savoir quelles sont les invariants que la
classe peut bien avoir qu'il n'est pas possible de mettre à mal en la
manipulant comme un vecteur?
Pas compris. Peux-tu détailler ?
(complèter une API perçue comme incomplète en ignorant le risque de
faire une classe n'a pas une responsabilité claire est la raison la plus
valable).
Syntax error :-)
Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
(Marc Espie) writes:Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
espie@lain.home (Marc Espie) writes:
Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
(Marc Espie) writes:Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
In article ,
Jean-Marc Bourguet wrote:(Marc Espie) writes:Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
Ouaip. Bien sur sur mon propre design.
Je trouve que Qt s'en sort pas trop mal, ils ont un design qu'est quand meme
un poil date ces jours-ci, mais qui marche encore relativement bien avec
du C++14...
In article <pxbegp29ex7.fsf@bourguet.org>,
Jean-Marc Bourguet <jm@bourguet.org> wrote:
espie@lain.home (Marc Espie) writes:
Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
Ouaip. Bien sur sur mon propre design.
Je trouve que Qt s'en sort pas trop mal, ils ont un design qu'est quand meme
un poil date ces jours-ci, mais qui marche encore relativement bien avec
du C++14...
In article ,
Jean-Marc Bourguet wrote:(Marc Espie) writes:Perso, je n'herite plus guere que d'interfaces au sens java, des classes
qui ne contiennent que le comportement que je veux, et rien cote
implementation...
Ça peut être difficile si on n'a pas écrit toutes les libs qu'ont
utilise. (Je pense à Qt p.e.)
Ouaip. Bien sur sur mon propre design.
Je trouve que Qt s'en sort pas trop mal, ils ont un design qu'est quand meme
un poil date ces jours-ci, mais qui marche encore relativement bien avec
du C++14...
Completer l'API obscurcit souvent la responsabilite n'est pas
claire l'elargit
(exemple de chose à ne pas faire, les classes string de la SL [...] font
beaucoup trop de choses qui a mon avis ne relevent pas de la
responsabilite d'une classe mais devraient etre faites par des fonctions
libres).
Completer l'API obscurcit souvent la responsabilite n'est pas
claire l'elargit
(exemple de chose à ne pas faire, les classes string de la SL [...] font
beaucoup trop de choses qui a mon avis ne relevent pas de la
responsabilite d'une classe mais devraient etre faites par des fonctions
libres).
Completer l'API obscurcit souvent la responsabilite n'est pas
claire l'elargit
(exemple de chose à ne pas faire, les classes string de la SL [...] font
beaucoup trop de choses qui a mon avis ne relevent pas de la
responsabilite d'une classe mais devraient etre faites par des fonctions
libres).