Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche, l'odeur
d'un truc qui marche, mais ca marche pas en vrai...
Ya t-il des gens parmi vous pour me dire si ca marche ca?..;)
Merci,
K.
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche, l'odeur
d'un truc qui marche, mais ca marche pas en vrai...
Ya t-il des gens parmi vous pour me dire si ca marche ca?..;)
Merci,
K.
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche, l'odeur
d'un truc qui marche, mais ca marche pas en vrai...
Ya t-il des gens parmi vous pour me dire si ca marche ca?..;)
Merci,
K.
On 2004-11-15, korchkidu wrote:Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Si current_A->detach() modifie la taille de A_, tu as un problème.
Car la size a une valeur constantante.
Ah bah oui forcement. Ca parait logique...
On 2004-11-15, korchkidu <korch_ki_du@yahoo.fr> wrote:
Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Si current_A->detach() modifie la taille de A_, tu as un problème.
Car la size a une valeur constantante.
Ah bah oui forcement. Ca parait logique...
On 2004-11-15, korchkidu wrote:Bonjour a tous,
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach() qui
est chargee de se chercher dans B et d'effacer l'element correspondant
(et de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Si current_A->detach() modifie la taille de A_, tu as un problème.
Car la size a une valeur constantante.
Ah bah oui forcement. Ca parait logique...
j'ai une classe B qui contient un std::vector<A*> _A. La classe A
contient (pour l'exemple) une seule methode A::detach() qui est
chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
j'ai une classe B qui contient un std::vector<A*> _A. La classe A
contient (pour l'exemple) une seule methode A::detach() qui est
chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
j'ai une classe B qui contient un std::vector<A*> _A. La classe A
contient (pour l'exemple) une seule methode A::detach() qui est
chargee de se chercher dans B et d'effacer l'element correspondant (et
de faire tous pleins d'autres super...;) ).
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach()
qui est chargee de se chercher dans B et d'effacer l'element
correspondant (et de faire tous pleins d'autres super...;) ).
étrange que la méthode de A supprime l'élement dans le vecteur de B...
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
ben ça dépend de ce que fait la méthode detach(). Elle a accès à _A ?
Comment ?
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach()
qui est chargee de se chercher dans B et d'effacer l'element
correspondant (et de faire tous pleins d'autres super...;) ).
étrange que la méthode de A supprime l'élement dans le vecteur de B...
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
ben ça dépend de ce que fait la méthode detach(). Elle a accès à _A ?
Comment ?
j'ai une classe B qui contient un std::vector<A*> _A.
La classe A contient (pour l'exemple) une seule methode A::detach()
qui est chargee de se chercher dans B et d'effacer l'element
correspondant (et de faire tous pleins d'autres super...;) ).
étrange que la méthode de A supprime l'élement dans le vecteur de B...
Dans le destructeur de B, je dois appeler detach() sur chaque objet.
Je fais un truc du genre:
A *current_A;
int size = _A.size();
int i;
for (i=0;i<size;++i)
{
current_A = _A.front();
current_A->detach(); //efface current_A de _A
}
Mais je ne sais pas pourquoi, je sens que derriere ca ya un truc qui
m'echappe et qui fait que ca a la couleur d'un truc qui marche,
l'odeur d'un truc qui marche, mais ca marche pas en vrai... Ya t-il
des gens parmi vous pour me dire si ca marche ca?..;)
ben ça dépend de ce que fait la méthode detach(). Elle a accès à _A ?
Comment ?
Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca plutot
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca plutot
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca plutot
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
wrote:Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca
plutot pratique en fait. Ca me permet de voir directement les membres
des variables normales. Vous faites comment vous?
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
variables en dehors des boucles. Si on les met dans une boucle, ca va
en creer une a chaque fois non?
kanze@gabi-soft.fr wrote:
Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca
plutot pratique en fait. Ca me permet de voir directement les membres
des variables normales. Vous faites comment vous?
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
variables en dehors des boucles. Si on les met dans une boucle, ca va
en creer une a chaque fois non?
wrote:Deux autres commentaires :
- Les noms qui commencent par un _ sont à éviter.
Bah mes attributs prives sont declares de la sorte. Je trouve ca
plutot pratique en fait. Ca me permet de voir directement les membres
des variables normales. Vous faites comment vous?
Les noms qui
commencent par un _ suivi d'un majuscule sont carrément interdits
par le langage.
C'est bon a savoir ca.
- En général, en C++, on évite de declarer des variables avant qu'on
en a besoin, sans initialisation. Dans ton cas, la variable
current_A, n'est même pas nécessaire, mais si tu veux le garder,
pour des raisons de lisibilité ou d'autre (je trouve la version sans
variable tout à fait lisible, mais des avis peuvent varier), il
serait préférable de la définir directement dans la boucle, avec
l'initialisation qu'il faut :
while ( ! myA.empty() ) {
A* currentA = myA.front() ;
// ...
}
Je vois. C'est marrant mais je croyais qu'il valait mieux declarer les
variables en dehors des boucles. Si on les met dans une boucle, ca va
en creer une a chaque fois non?
- On utilise un préfixe « synthétique » ; dans la dernière boîte où
j'étais, « m_ », avec « s_ » pour les statiques. La plupart du
temps, ça lit moins bien que « my » et « our », mais ça évite des
choses comme « myIsEnabled », etc. (En fait, tel que je l'utilise,
le « my » est aussi un préfixe synthétique. Mais il donne
l'impression de ne pas l'être.)
- On utilise un préfixe « synthétique » ; dans la dernière boîte où
j'étais, « m_ », avec « s_ » pour les statiques. La plupart du
temps, ça lit moins bien que « my » et « our », mais ça évite des
choses comme « myIsEnabled », etc. (En fait, tel que je l'utilise,
le « my » est aussi un préfixe synthétique. Mais il donne
l'impression de ne pas l'être.)
- On utilise un préfixe « synthétique » ; dans la dernière boîte où
j'étais, « m_ », avec « s_ » pour les statiques. La plupart du
temps, ça lit moins bien que « my » et « our », mais ça évite des
choses comme « myIsEnabled », etc. (En fait, tel que je l'utilise,
le « my » est aussi un préfixe synthétique. Mais il donne
l'impression de ne pas l'être.)