Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de
definir ma fonction deleteAttr() de sorte que:
- si "Type" est un pointeur sur je ne sais quoi, que deleteAttr()
fasse un delete myAttr;
- sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
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
Jean-Marc Bourguet
Philippe Mesmeur writes:
J'ai une classe template du style:
template <class Type> class myTemplateClass {
...
private: void deleteAttr();
private: Type myAttr;
};
Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de definir ma fonction deleteAttr() de sorte que: - si "Type" est un pointeur sur je ne sais quoi, que deleteAttr() fasse un delete myAttr; - sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
Pour etre un peu plus generique, passer Helper en argument template
template <typename Type, typename Helper = Helper<Type> > class myTemplateClass...
Le memset ne m'attire pas tellement (on peut toujours fournir une specialisation explicite si ca n'est pas adequat mais bon...) Pour etre g
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Philippe Mesmeur <pmes@ocegr.fr> writes:
J'ai une classe template du style:
template <class Type>
class myTemplateClass
{
...
private:
void deleteAttr();
private:
Type myAttr;
};
Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de
definir ma fonction deleteAttr() de sorte que:
- si "Type" est un pointeur sur je ne sais quoi, que deleteAttr() fasse
un delete myAttr;
- sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Specialisation partielle de la classe ou d'une classe annexe.
Vraissemblablement d'une classe annexe, pas d'une fonction car ce
n'est pas possible.
Pour etre un peu plus generique, passer Helper en argument template
template <typename Type, typename Helper = Helper<Type> >
class myTemplateClass...
Le memset ne m'attire pas tellement (on peut toujours fournir une
specialisation explicite si ca n'est pas adequat mais bon...) Pour
etre g
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de definir ma fonction deleteAttr() de sorte que: - si "Type" est un pointeur sur je ne sais quoi, que deleteAttr() fasse un delete myAttr; - sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
Pour etre un peu plus generique, passer Helper en argument template
template <typename Type, typename Helper = Helper<Type> > class myTemplateClass...
Le memset ne m'attire pas tellement (on peut toujours fournir une specialisation explicite si ca n'est pas adequat mais bon...) Pour etre g
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michel Michaud
Dans news:, Philippe Mesmeur
J'ai une classe template du style:
template <class Type> class myTemplateClass {
...
private: void deleteAttr();
private: Type myAttr;
};
Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de definir ma fonction deleteAttr() de sorte que: - si "Type" est un pointeur sur je ne sais quoi, que deleteAttr() fasse un delete myAttr; - sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Oui (voir la réponse de Jean-Marc, mais il y a aussi des outils plus généraux chez Boost), mais je reste perplexe devant un programme qui utilisera la méta-programmation C++ et un memset ! Je crois qu'il faut que tu fournisses une meilleure méthode pour la réinitialisation et là, le cas du pointeur ne sera qu'un parmi d'autres.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans news:4002C5B5.5010304@ocegr.fr, Philippe Mesmeur <pmes@ocegr.fr>
J'ai une classe template du style:
template <class Type>
class myTemplateClass
{
...
private:
void deleteAttr();
private:
Type myAttr;
};
Je voudrais savoir si il y a moyen par une bidouille ou une autre
;-) de definir ma fonction deleteAttr() de sorte que:
- si "Type" est un pointeur sur je ne sais quoi, que
deleteAttr() fasse un delete myAttr;
- sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Oui (voir la réponse de Jean-Marc, mais il y a aussi des outils
plus généraux chez Boost), mais je reste perplexe devant un
programme qui utilisera la méta-programmation C++ et un memset !
Je crois qu'il faut que tu fournisses une meilleure méthode
pour la réinitialisation et là, le cas du pointeur ne sera qu'un
parmi d'autres.
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Je voudrais savoir si il y a moyen par une bidouille ou une autre ;-) de definir ma fonction deleteAttr() de sorte que: - si "Type" est un pointeur sur je ne sais quoi, que deleteAttr() fasse un delete myAttr; - sinon, qu'il fasse un memset(&myAttr, 0, sizeof(myAttr));
Oui (voir la réponse de Jean-Marc, mais il y a aussi des outils plus généraux chez Boost), mais je reste perplexe devant un programme qui utilisera la méta-programmation C++ et un memset ! Je crois qu'il faut que tu fournisses une meilleure méthode pour la réinitialisation et là, le cas du pointeur ne sera qu'un parmi d'autres.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Philippe Mesmeur
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma "culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
Merci d'avance
Philippe
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma
"culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe.
Vraissemblablement d'une classe annexe, pas d'une fonction car ce
n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma "culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
Merci d'avance
Philippe
Jean-Marc Bourguet
Philippe Mesmeur writes:
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma "culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
On ne peut pas specialiser partiellement une fonction template.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Philippe Mesmeur <pmes@ocegr.fr> writes:
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma
"culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe.
Vraissemblablement d'une classe annexe, pas d'une fonction car ce
n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
On ne peut pas specialiser partiellement une fonction template.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Une fois de plus, merci beaucoup pour la reponse. Cependant, pour ma "culture personnelle" ;-) je voudrais savoir ....
Jean-Marc Bourguet wrote:
Specialisation partielle de la classe ou d'une classe annexe. Vraissemblablement d'une classe annexe, pas d'une fonction car ce n'est pas possible.
ce qui fait qu'une fonction/method template n'est pas possible?
On ne peut pas specialiser partiellement une fonction template.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org