Bonjour,
j'ai cr=E9=E9 une classe et je voudrais savoir comment cr=E9er une instance
"null" de cette classe, =E0 laquelle je peux comparer une autre
instance? Par exemple:
MaClass objet1;
if (objet1=3D=3Dnull)
{
...
}
Comment d=E9finir le "null" d'une classe ?
Merci d'avance
Philippe
j'ai créé une classe et je voudrais savoir comment créer une instance "null" de cette classe, à laquelle je peux comparer une autre instance?
Aucune solution simple. Le mieux est encore de créer une fonction member "EstNull()" (ou quelque chose d'approchant) qui indique si l'objet est valide ou pas.
Une autre solution est de passer par un pointeur, ce qui te permettra d'utiliser le pointeur nul :
if (ptr_objet == 0) ...
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
On Fri, 28 Aug 2009 14:16:50 -0700 (PDT), Phil <pbruyant@yahoo.com>:
j'ai créé une classe et je voudrais savoir comment créer une instance
"null" de cette classe, à laquelle je peux comparer une autre
instance?
Aucune solution simple. Le mieux est encore de créer une fonction
member "EstNull()" (ou quelque chose d'approchant) qui indique si
l'objet est valide ou pas.
Une autre solution est de passer par un pointeur, ce qui te permettra
d'utiliser le pointeur nul :
if (ptr_objet == 0)
...
Mais sans savoir ce que tu veux faire exactement, c'est difficile de
t'aider.
j'ai créé une classe et je voudrais savoir comment créer une instance "null" de cette classe, à laquelle je peux comparer une autre instance?
Aucune solution simple. Le mieux est encore de créer une fonction member "EstNull()" (ou quelque chose d'approchant) qui indique si l'objet est valide ou pas.
Une autre solution est de passer par un pointeur, ce qui te permettra d'utiliser le pointeur nul :
if (ptr_objet == 0) ...
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
Phil
On 29 août, 01:48, Fabien LE LEZ wrote:
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
Merci pour vos réponses.
Plus en détail: 1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde classe Class1List qui est une liste d'objets de classe Class1: class Class1List:public CList<Class1, Class1&> { public : Class1 TrouverInstanceClass1(CString nomInstance); // retourne un objet de classe Class1 }
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne un pointeur sur une instance Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un pointeur : class Class1List:public CList<Class1, Class1&> { public : Class1* TrouverInstanceClass1(CString nomInstance);// retourne un pointeur vers un objet de classe Class1 }
ce qui me permet de retourner NULL si aucun object n'est trouvé. Merci encore Philippe
On 29 août, 01:48, Fabien LE LEZ <grams...@gramster.com> wrote:
Mais sans savoir ce que tu veux faire exactement, c'est difficile de
t'aider.
Merci pour vos réponses.
Plus en détail:
1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde
classe Class1List qui est une liste d'objets de classe Class1:
class Class1List:public CList<Class1, Class1&>
{
public :
Class1 TrouverInstanceClass1(CString nomInstance); // retourne un
objet de classe Class1
}
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui
retourne un pointeur sur une instance Class1 d'après son nom, ou
"null" si aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un
pointeur :
class Class1List:public CList<Class1, Class1&>
{
public :
Class1* TrouverInstanceClass1(CString nomInstance);// retourne un
pointeur vers un objet de classe Class1
}
ce qui me permet de retourner NULL si aucun object n'est trouvé.
Merci encore
Philippe
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
Merci pour vos réponses.
Plus en détail: 1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde classe Class1List qui est une liste d'objets de classe Class1: class Class1List:public CList<Class1, Class1&> { public : Class1 TrouverInstanceClass1(CString nomInstance); // retourne un objet de classe Class1 }
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne un pointeur sur une instance Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un pointeur : class Class1List:public CList<Class1, Class1&> { public : Class1* TrouverInstanceClass1(CString nomInstance);// retourne un pointeur vers un objet de classe Class1 }
ce qui me permet de retourner NULL si aucun object n'est trouvé. Merci encore Philippe
Phil
On 29 août, 01:48, Fabien LE LEZ wrote:
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
Merci pour vos réponses.
Plus en détail: 1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde classe Class1List qui est une liste d'objets de classe Class1: class Class1List:public CList<Class1, Class1&> { public : Class1 TrouverInstanceClass1(CString nomInstance); // retourne un objet de classe Class1 }
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne une instance de type Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un pointeur : class Class1List:public CList<Class1, Class1&> { public : Class1* TrouverInstanceClass1(CString nomInstance);// retourne un pointeur vers un objet de classe Class1 }
ce qui me permet de retourner NULL si aucun object n'est trouvé. Merci encore Philippe
On 29 août, 01:48, Fabien LE LEZ <grams...@gramster.com> wrote:
Mais sans savoir ce que tu veux faire exactement, c'est difficile de
t'aider.
Merci pour vos réponses.
Plus en détail:
1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde
classe Class1List qui est une liste d'objets de classe Class1:
class Class1List:public CList<Class1, Class1&>
{
public :
Class1 TrouverInstanceClass1(CString nomInstance); // retourne un
objet de classe Class1
}
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui
retourne une instance de type Class1 d'après son nom, ou "null" si
aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un
pointeur :
class Class1List:public CList<Class1, Class1&>
{
public :
Class1* TrouverInstanceClass1(CString nomInstance);// retourne un
pointeur vers un objet de classe Class1
}
ce qui me permet de retourner NULL si aucun object n'est trouvé.
Merci encore
Philippe
Mais sans savoir ce que tu veux faire exactement, c'est difficile de t'aider.
Merci pour vos réponses.
Plus en détail: 1) Je crée une classe Class1.
2) Ensuite à l'aide de la classe CList (MFC), je crée une seconde classe Class1List qui est une liste d'objets de classe Class1: class Class1List:public CList<Class1, Class1&> { public : Class1 TrouverInstanceClass1(CString nomInstance); // retourne un objet de classe Class1 }
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne une instance de type Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Je vais implémenter la solution de Fabien qui consiste à retourner un pointeur : class Class1List:public CList<Class1, Class1&> { public : Class1* TrouverInstanceClass1(CString nomInstance);// retourne un pointeur vers un objet de classe Class1 }
ce qui me permet de retourner NULL si aucun object n'est trouvé. Merci encore Philippe
Mickaël Wolff
Phil wrote:
ce qui me permet de retourner NULL si aucun object n'est trouvé.
As-tu une très bonne raison d'utiliser CList au lieu de std::list<> (ou std::vector<>) ?
Les MFC sont mal écrites et obsolètes. La seule chose que Microsoft ait fait de bien avec, c'est de les abandonner.
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne une instance de type Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Effectivement, renvoyer un pointeur nul est probablement la solution la plus simple.
Une autre solution (ou plutôt, l'encapsulation de la même solution) est d'utiliser une classe "Faillible" -- tu renvoies un objet qui peut se convertir en un Class1, mais a aussi une fonction membre EstValide().
Par exemple :
Faillible<Class1> f= TrouverInstanceClass1(); if (f.EstValide()) { Faire quelque chose avec f } else { Pas trouvé ! }
Une troisième solution, utile dans certains cas, est de renvoyer un Class1, ou lancer une exception si l'objet n'a pas été trouvé.
On Sat, 29 Aug 2009 01:02:45 -0700 (PDT), Phil <pbruyant@yahoo.com>:
2) Ensuite à l'aide de la classe CList (MFC),
As-tu une très bonne raison d'utiliser CList au lieu de std::list<>
(ou std::vector<>) ?
Les MFC sont mal écrites et obsolètes. La seule chose que Microsoft
ait fait de bien avec, c'est de les abandonner.
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui
retourne une instance de type Class1 d'après son nom, ou "null" si
aucun objet Class1 n'est trouvé.
Effectivement, renvoyer un pointeur nul est probablement la solution
la plus simple.
Une autre solution (ou plutôt, l'encapsulation de la même solution)
est d'utiliser une classe "Faillible" -- tu renvoies un objet qui peut
se convertir en un Class1, mais a aussi une fonction membre
EstValide().
Par exemple :
Faillible<Class1> f= TrouverInstanceClass1();
if (f.EstValide())
{
Faire quelque chose avec f
}
else
{
Pas trouvé !
}
Une troisième solution, utile dans certains cas, est de renvoyer un
Class1, ou lancer une exception si l'objet n'a pas été trouvé.
As-tu une très bonne raison d'utiliser CList au lieu de std::list<> (ou std::vector<>) ?
Les MFC sont mal écrites et obsolètes. La seule chose que Microsoft ait fait de bien avec, c'est de les abandonner.
3) Je veux écrire la méthode TrouverInstanceClass1() de Class1List qui retourne une instance de type Class1 d'après son nom, ou "null" si aucun objet Class1 n'est trouvé.
Effectivement, renvoyer un pointeur nul est probablement la solution la plus simple.
Une autre solution (ou plutôt, l'encapsulation de la même solution) est d'utiliser une classe "Faillible" -- tu renvoies un objet qui peut se convertir en un Class1, mais a aussi une fonction membre EstValide().
Par exemple :
Faillible<Class1> f= TrouverInstanceClass1(); if (f.EstValide()) { Faire quelque chose avec f } else { Pas trouvé ! }
Une troisième solution, utile dans certains cas, est de renvoyer un Class1, ou lancer une exception si l'objet n'a pas été trouvé.
Phil
On 29 août, 13:15, Mickaël Wolff wrote:
Phil wrote: > ce qui me permet de retourner NULL si aucun object n'est trouvé.
As-tu une très bonne raison d'utiliser CList au lieu de std::list<> (ou std::vector<>) ?
Les MFC sont mal écrites et obsolètes. La seule chose que Microsoft ait fait de bien avec, c'est de les abandonner.
ben j'ai appris le C++ sur le tas (càd en programmant avec les MFC) et j'ai des lacunes (je savais pas qu'un équivalent de CList existait :)
Fabien LE LEZ
On Sat, 29 Aug 2009 06:13:23 -0700 (PDT), Phil :
NULL ou 0, c'est équivalent en terme de difficulté de programmation, et 0 c'est un entier alors que NULL c'est plutôt pour un pointeur, non ?
Il y a eu des quantités phénoménales de discussions à ce sujet : en C++, faut-il écrire "0" ou "NULL" pour le pointeur nul ?
Il n'y a pas vraiment de réponse absolue. Personnellement, je préfère écrire "0" ; quant à toi, choisis un des deux et tiens-t-y. Mais sois préparé à lire les deux.
On Sat, 29 Aug 2009 06:13:23 -0700 (PDT), Phil <pbruyant@yahoo.com>:
NULL ou 0, c'est équivalent en terme de difficulté de programmation,
et 0 c'est un entier alors que NULL c'est plutôt pour un pointeur,
non ?
Il y a eu des quantités phénoménales de discussions à ce sujet :
en C++, faut-il écrire "0" ou "NULL" pour le pointeur nul ?
Il n'y a pas vraiment de réponse absolue. Personnellement, je préfère
écrire "0" ; quant à toi, choisis un des deux et tiens-t-y. Mais sois
préparé à lire les deux.
NULL ou 0, c'est équivalent en terme de difficulté de programmation, et 0 c'est un entier alors que NULL c'est plutôt pour un pointeur, non ?
Il y a eu des quantités phénoménales de discussions à ce sujet : en C++, faut-il écrire "0" ou "NULL" pour le pointeur nul ?
Il n'y a pas vraiment de réponse absolue. Personnellement, je préfère écrire "0" ; quant à toi, choisis un des deux et tiens-t-y. Mais sois préparé à lire les deux.
Fabien LE LEZ
On Sat, 29 Aug 2009 06:15:25 -0700 (PDT), Phil :
ben j'ai appris le C++ sur le tas
Moi aussi. Ça m'a fait perdre au moins cinq ans.
Je t'encourage vivement à lire "Accelerated C++" de Koenig et Moo ; ce très bon bouquin t'aidera à (re)partir du bon pied. Mon principal regret est de ne pas l'avoir lu dès le début. (D'un autre côté, il est arrivé un peu tard pour moi...)
On Sat, 29 Aug 2009 06:15:25 -0700 (PDT), Phil <pbruyant@yahoo.com>:
ben j'ai appris le C++ sur le tas
Moi aussi. Ça m'a fait perdre au moins cinq ans.
Je t'encourage vivement à lire "Accelerated C++" de Koenig et Moo ; ce
très bon bouquin t'aidera à (re)partir du bon pied. Mon principal
regret est de ne pas l'avoir lu dès le début. (D'un autre côté, il est
arrivé un peu tard pour moi...)
Je t'encourage vivement à lire "Accelerated C++" de Koenig et Moo ; ce très bon bouquin t'aidera à (re)partir du bon pied. Mon principal regret est de ne pas l'avoir lu dès le début. (D'un autre côté, il est arrivé un peu tard pour moi...)