Je suis developpeur C et j'ai <appris> le C++ en entreprise avec les MFC.
Autant dire que quand je suis venu visiter ce newsgroupe, j'ai vu que le C++
devait plutot s'appuyer sur la stl. J'ai donc troqué VC++ contre djgpp et
hop, au boulot, on reprend le C++ à zero.
voila mon probleme (de conception peut etre ?). Le code suit.
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte
pas de compiler. En effet, l'iterateur est const du fait que la méthode est
const, donc le --idx est interdit. Pourtant, je n'appelle que des méthodes
const de A. Comment faire ? Est-ce possible ? Il m'aurait semblé que le fait
que l'iterateur soit local n'affect pas dirrectement l'objet B.
Je ne met pas tout mon code, juste la partie qui ne compile pas.
CODE:
#include <list>
//////////////////////////////////////////////
class A
{
public:
A():m_pos(0),m_value(0) {}
A(int pos, int value):m_pos(pos),m_value(value) {}
virtual ~A(){}
protected:
int m_pos;
int m_value;
public:
int GetPos(void) const { return m_pos; }
};
public:
A GetA(int pos) const
{
A a;
for (iterA idx=m_listA.end(); idx!=m_listA.begin(); --idx)
{
a = *idx;
if (a.GetPos() <= pos)
{
// Stop, on est au bon endroit
break;
}
}
return a;
}
};
//////////////////////////////////////////////
int main(void)
{
return 0;
}
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
Fabien LE LEZ
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche" :
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me dit que remplacer des "iterator" par des "const_iterator" pourrait peut-être améliorer les choses.
En effet, l'iterateur est const du fait que la méthode est const,
Non. C'est ce qui est pointé par l'itérateur qui est const. C'est comme la différence entre un pointeur constant vers un entier, et un pointeur vers un entier constant.
donc le --idx est interdit.
Non.
-- schtroumpf schtroumpf
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche"
<jeremie.fouche.tonmasque@tiscali.fr>:
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte
pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me
dit que remplacer des "iterator" par des "const_iterator" pourrait
peut-être améliorer les choses.
En effet, l'iterateur est const du fait que la méthode est
const,
Non. C'est ce qui est pointé par l'itérateur qui est const.
C'est comme la différence entre un pointeur constant vers un entier,
et un pointeur vers un entier constant.
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche" :
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me dit que remplacer des "iterator" par des "const_iterator" pourrait peut-être améliorer les choses.
En effet, l'iterateur est const du fait que la méthode est const,
Non. C'est ce qui est pointé par l'itérateur qui est const. C'est comme la différence entre un pointeur constant vers un entier, et un pointeur vers un entier constant.
donc le --idx est interdit.
Non.
-- schtroumpf schtroumpf
Jeremie Fouche
Fabien LE LEZ a écrit dans le message :
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche" :
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me
Ha, elle s'appelle en fait GetA(int), alors bon...
dit que remplacer des "iterator" par des "const_iterator" pourrait peut-être améliorer les choses.
Voui, merci.Je n'avais pas compris l'utilité du const_iterator. C'est fait.
En effet, l'iterateur est const du fait que la méthode est const,
Non. C'est ce qui est pointé par l'itérateur qui est const. C'est comme la différence entre un pointeur constant vers un entier, et un pointeur vers un entier constant.
Bah voila, tout est dit. Merci bien.
-- Jérémie
Fabien LE LEZ <gramster@gramster.com> a écrit dans le message :
318jd0lkqtpuhok3po40t6ld72c60spg5q@4ax.com...
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche"
<jeremie.fouche.tonmasque@tiscali.fr>:
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte
pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me
Ha, elle s'appelle en fait GetA(int), alors bon...
dit que remplacer des "iterator" par des "const_iterator" pourrait
peut-être améliorer les choses.
Voui, merci.Je n'avais pas compris l'utilité du const_iterator. C'est fait.
En effet, l'iterateur est const du fait que la méthode est
const,
Non. C'est ce qui est pointé par l'itérateur qui est const.
C'est comme la différence entre un pointeur constant vers un entier,
et un pointeur vers un entier constant.
On Wed, 23 Jun 2004 17:12:55 +0200, "Jeremie Fouche" :
la méthode B::GetPos(int) est manifestement const, pourtant gcc n'accepte pas de compiler.
J'ai pas trouvé ta fonction B::GetPos(int), mais mon petit doigt me
Ha, elle s'appelle en fait GetA(int), alors bon...
dit que remplacer des "iterator" par des "const_iterator" pourrait peut-être améliorer les choses.
Voui, merci.Je n'avais pas compris l'utilité du const_iterator. C'est fait.
En effet, l'iterateur est const du fait que la méthode est const,
Non. C'est ce qui est pointé par l'itérateur qui est const. C'est comme la différence entre un pointeur constant vers un entier, et un pointeur vers un entier constant.