Bonjour,
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
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
Michael DOUBEZ
Bonjour, J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les objet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Michael
Bonjour,
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix
entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les objet par
pointeur sinon par valeur. Vérifier que ta classe File possède un
constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la façon
de les insérer et de ton type de container.
Bonjour, J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les objet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Michael
gpgnews
On 14 fév, 09:10, Michael DOUBEZ wrote:
Bonjour, J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la fa çon de les insérer et de ton type de container.
Michael
Container type = list ou vector ou simplement un tableau. La class File n'est pas susceptible d'être hérité. Auriez vous quelques exemples ? Merci.
On 14 fév, 09:10, Michael DOUBEZ <michael.dou...@free.fr> wrote:
Bonjour,
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix
entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par
pointeur sinon par valeur. Vérifier que ta classe File possède un
constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la fa çon
de les insérer et de ton type de container.
Michael
Container type = list ou vector ou simplement un tableau.
La class File n'est pas susceptible d'être hérité.
Auriez vous quelques exemples ?
Merci.
Bonjour, J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la fa çon de les insérer et de ton type de container.
Michael
Container type = list ou vector ou simplement un tableau. La class File n'est pas susceptible d'être hérité. Auriez vous quelques exemples ? Merci.
James Kanze
Michael DOUBEZ wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Ce n'est qu'un détail, mais il n'y a pas de collection rope dans la bibliothèque standard. La bibliothèque SGI l'offre comme extension, mais elle a, je crois, une interface et des contraints assez proche de std::basic_string. Et pour instantier un basic_string, il faut que le type soit un POD.
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que 1) la classe File supporte la copie et l'affectation, et 2) il n'y a pas d'héritage en vue (ce qui est probable de toute façon si la classe supporte l'affectation). Sinon, il faudrait qu'il revoie ce qu'il veut faire.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Michael DOUBEZ wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix
entre tous les containers de la STL: vector, list, rope, set, map ...
Ce n'est qu'un détail, mais il n'y a pas de collection rope dans
la bibliothèque standard. La bibliothèque SGI l'offre comme
extension, mais elle a, je crois, une interface et des
contraints assez proche de std::basic_string. Et pour instantier
un basic_string, il faut que le type soit un POD.
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par
pointeur sinon par valeur. Vérifier que ta classe File possède un
constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que
1) la classe File supporte la copie et l'affectation, et 2) il
n'y a pas d'héritage en vue (ce qui est probable de toute façon
si la classe supporte l'affectation). Sinon, il faudrait qu'il
revoie ce qu'il veut faire.
Si ta question est de savoir comment les copier, ça dépends de
la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les
même contraints, au moins formellement. Il faut que les
instances supportent la construction par copie et l'affectation.
(Dans la pratique, je crois que beaucoup d'implémentations de
std::list n'exige pas l'affectation. Mais la norme dit qu'il la
faut, et au moins une implémentation l'exige.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Ce n'est qu'un détail, mais il n'y a pas de collection rope dans la bibliothèque standard. La bibliothèque SGI l'offre comme extension, mais elle a, je crois, une interface et des contraints assez proche de std::basic_string. Et pour instantier un basic_string, il faut que le type soit un POD.
Si ta classe File est susceptible d'être hérité, tu stocke les obje t par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que 1) la classe File supporte la copie et l'affectation, et 2) il n'y a pas d'héritage en vue (ce qui est probable de toute façon si la classe supporte l'affectation). Sinon, il faudrait qu'il revoie ce qu'il veut faire.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
James Kanze
wrote:
On 14 fév, 09:10, Michael DOUBEZ wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les ob jet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la f açon de les insérer et de ton type de container.
Container type = list ou vector ou simplement un tableau. La class File n'est pas susceptible d'être hérité. Auriez vous quelques exemples ?
Des exemples de quoi, au juste ? Si ta classe supporte l'affectation et la copie, tu t'en sers à peu près comme si c'était un int :
std::vector< File > v ; v.push_back( someFile ) ; // ... File x = v[ 0 ] ; v[ 0 ] = x ; // mais aussi... v[ 0 ].f() ; for ( std::vector< File >::iterator i = v.begin() ; i != v.end() ; ++ i ) { i->f() ; }
Enfin, je ne comprends pas le sens de ta question.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
gpgnews@gmail.com wrote:
On 14 fév, 09:10, Michael DOUBEZ <michael.dou...@free.fr> wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix
entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les ob jet par
pointeur sinon par valeur. Vérifier que ta classe File possède un
constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la f açon
de les insérer et de ton type de container.
Container type = list ou vector ou simplement un tableau.
La class File n'est pas susceptible d'être hérité.
Auriez vous quelques exemples ?
Des exemples de quoi, au juste ? Si ta classe supporte
l'affectation et la copie, tu t'en sers à peu près comme si
c'était un int :
std::vector< File > v ;
v.push_back( someFile ) ;
// ...
File x = v[ 0 ] ;
v[ 0 ] = x ;
// mais aussi...
v[ 0 ].f() ;
for ( std::vector< File >::iterator i = v.begin() ;
i != v.end() ;
++ i ) {
i->f() ;
}
Enfin, je ne comprends pas le sens de ta question.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
Si ta question est de savoir comment stocker les objets, tu as le choix entre tous les containers de la STL: vector, list, rope, set, map ...
Si ta classe File est susceptible d'être hérité, tu stocke les ob jet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Si ta question est de savoir comment les copier, ça dépends de la f açon de les insérer et de ton type de container.
Container type = list ou vector ou simplement un tableau. La class File n'est pas susceptible d'être hérité. Auriez vous quelques exemples ?
Des exemples de quoi, au juste ? Si ta classe supporte l'affectation et la copie, tu t'en sers à peu près comme si c'était un int :
std::vector< File > v ; v.push_back( someFile ) ; // ... File x = v[ 0 ] ; v[ 0 ] = x ; // mais aussi... v[ 0 ].f() ; for ( std::vector< File >::iterator i = v.begin() ; i != v.end() ; ++ i ) { i->f() ; }
Enfin, je ne comprends pas le sens de ta question.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Michael DOUBEZ
Michael DOUBEZ wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
[snip]
Si ta classe File est susceptible d'être hérité, tu stocke les objet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que 1) la classe File supporte la copie et l'affectation, et 2) il n'y a pas d'héritage en vue (ce qui est probable de toute façon si la classe supporte l'affectation). Sinon, il faudrait qu'il revoie ce qu'il veut faire.
Je ne connais pas l'expérience de l'OP donc j'ai répondu avec des conseils généraux: 1) il est facile (au début) d'oublier de définir un constructeur par copy et, si il n'est pas trivial (pointeur dans File), d'avoir un bug. 2) la copie peut se faire par clonage, ce qui est probable si File peut être hérité.
En pratique, je suis d'accord qu'à priori, File n'est pas hérité et qu'elle supporte la copie et l'affectation. Du moins, en l'absence de contrainte spécifique, elle devrait.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les insérer dans le container de Dir. Il y aura une différence dans l'implémentation si il utilise un container associatif ou non et comment il pourrait utiliser un algorithme standard pour les insérer.
Je suis curieux, quelle implémentation requiert un opérateur de copie et pourquoi ?
Michael
Michael DOUBEZ wrote:
J'ai deux classes, Dir et File, la class Dir doit contetnir une list
d'objets type File (une copie des objets File et non des references).
Quelles sont les differentes solutions possible svp ?
Bonne journée.
[snip]
Si ta classe File est susceptible d'être hérité, tu stocke les objet par
pointeur sinon par valeur. Vérifier que ta classe File possède un
constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que
1) la classe File supporte la copie et l'affectation, et 2) il
n'y a pas d'héritage en vue (ce qui est probable de toute façon
si la classe supporte l'affectation). Sinon, il faudrait qu'il
revoie ce qu'il veut faire.
Je ne connais pas l'expérience de l'OP donc j'ai répondu avec des
conseils généraux:
1) il est facile (au début) d'oublier de définir un constructeur par
copy et, si il n'est pas trivial (pointeur dans File), d'avoir un bug.
2) la copie peut se faire par clonage, ce qui est probable si File peut
être hérité.
En pratique, je suis d'accord qu'à priori, File n'est pas hérité et
qu'elle supporte la copie et l'affectation. Du moins, en l'absence de
contrainte spécifique, elle devrait.
Si ta question est de savoir comment les copier, ça dépends de
la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les
même contraints, au moins formellement. Il faut que les
instances supportent la construction par copie et l'affectation.
(Dans la pratique, je crois que beaucoup d'implémentations de
std::list n'exige pas l'affectation. Mais la norme dit qu'il la
faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les
insérer dans le container de Dir. Il y aura une différence dans
l'implémentation si il utilise un container associatif ou non et comment
il pourrait utiliser un algorithme standard pour les insérer.
Je suis curieux, quelle implémentation requiert un opérateur de copie et
pourquoi ?
J'ai deux classes, Dir et File, la class Dir doit contetnir une list d'objets type File (une copie des objets File et non des references). Quelles sont les differentes solutions possible svp ? Bonne journée.
[snip]
Si ta classe File est susceptible d'être hérité, tu stocke les objet par pointeur sinon par valeur. Vérifier que ta classe File possède un constructeur par copie.
Il a dit qu'il veut stocker des copies. A priori, ça suppose que 1) la classe File supporte la copie et l'affectation, et 2) il n'y a pas d'héritage en vue (ce qui est probable de toute façon si la classe supporte l'affectation). Sinon, il faudrait qu'il revoie ce qu'il veut faire.
Je ne connais pas l'expérience de l'OP donc j'ai répondu avec des conseils généraux: 1) il est facile (au début) d'oublier de définir un constructeur par copy et, si il n'est pas trivial (pointeur dans File), d'avoir un bug. 2) la copie peut se faire par clonage, ce qui est probable si File peut être hérité.
En pratique, je suis d'accord qu'à priori, File n'est pas hérité et qu'elle supporte la copie et l'affectation. Du moins, en l'absence de contrainte spécifique, elle devrait.
Si ta question est de savoir comment les copier, ça dépends de la façon de les insérer et de ton type de container.
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les insérer dans le container de Dir. Il y aura une différence dans l'implémentation si il utilise un container associatif ou non et comment il pourrait utiliser un algorithme standard pour les insérer.
Je suis curieux, quelle implémentation requiert un opérateur de copie et pourquoi ?
Michael
James Kanze
Michael DOUBEZ wrote:
[...]
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les insérer dans le container de Dir. Il y aura une différence dans l'implémentation si il utilise un container associatif ou non et comment il pourrait utiliser un algorithme standard pour les insérer.
C'est un bon point. Pour commencer, s'il s'agit de std::set, il faut aussi que File soit comparable.
Je suis curieux, quelle implémentation requiert un opérateur de copie et pourquoi ?
Toutes les implémentations que je connais requiert un constructeur de copie pour mettre l'objet dans n'importe quelle collection. Selon les opérations, certaines n'exige pas toujours un opérateur d'affectation. Recemment, certaines implémentations (surtout g++) implémentent une vérification des conceptes. La norme dit que le type doit supporter l'affectation, et g++ a du code pour insister que le code ne se compile pas si ce n'est pas le cas, bien que comme toutes les autres, il n'en a pas réelement besoin dans son implémentation.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Michael DOUBEZ wrote:
[...]
Oui et non. Toutes les collections du C++ standard impose les
même contraints, au moins formellement. Il faut que les
instances supportent la construction par copie et l'affectation.
(Dans la pratique, je crois que beaucoup d'implémentations de
std::list n'exige pas l'affectation. Mais la norme dit qu'il la
faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les
insérer dans le container de Dir. Il y aura une différence dans
l'implémentation si il utilise un container associatif ou non et comment
il pourrait utiliser un algorithme standard pour les insérer.
C'est un bon point. Pour commencer, s'il s'agit de std::set, il
faut aussi que File soit comparable.
Je suis curieux, quelle implémentation requiert un opérateur de copie et
pourquoi ?
Toutes les implémentations que je connais requiert un
constructeur de copie pour mettre l'objet dans n'importe quelle
collection. Selon les opérations, certaines n'exige pas
toujours un opérateur d'affectation. Recemment, certaines
implémentations (surtout g++) implémentent une vérification des
conceptes. La norme dit que le type doit supporter
l'affectation, et g++ a du code pour insister que le code ne se
compile pas si ce n'est pas le cas, bien que comme toutes les
autres, il n'en a pas réelement besoin dans son implémentation.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Oui et non. Toutes les collections du C++ standard impose les même contraints, au moins formellement. Il faut que les instances supportent la construction par copie et l'affectation. (Dans la pratique, je crois que beaucoup d'implémentations de std::list n'exige pas l'affectation. Mais la norme dit qu'il la faut, et au moins une implémentation l'exige.)
Oui, je me suis mal exprimé; je pensais surtout à la façon de les insérer dans le container de Dir. Il y aura une différence dans l'implémentation si il utilise un container associatif ou non et comment il pourrait utiliser un algorithme standard pour les insérer.
C'est un bon point. Pour commencer, s'il s'agit de std::set, il faut aussi que File soit comparable.
Je suis curieux, quelle implémentation requiert un opérateur de copie et pourquoi ?
Toutes les implémentations que je connais requiert un constructeur de copie pour mettre l'objet dans n'importe quelle collection. Selon les opérations, certaines n'exige pas toujours un opérateur d'affectation. Recemment, certaines implémentations (surtout g++) implémentent une vérification des conceptes. La norme dit que le type doit supporter l'affectation, et g++ a du code pour insister que le code ne se compile pas si ce n'est pas le cas, bien que comme toutes les autres, il n'en a pas réelement besoin dans son implémentation.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34