Pointeur de template - C++ - Programmation
Marsh Posté le 12-07-2007 à 20:16:53
Tu ne pourrais pas essayer de faire un héritage.
Sans entrer dans le détail de la programmation, on peut imaginer de créer une classe "Article" puis des classes héritant de Article qui se nommeraient "Fruit","Voiture" ou "Animaux" et qui hériteraient de "Article". Tu pourrais ensuite créer un unique tableau destiné à stocker des objets de type "Article" et y placer des objets de chacune de ces trois classe, sans aucun problème.
J'espère avoir été à peu près clair. Cela donne quelque chose comme :
[cpp]
class MyStruct
{
....
}
class Entier : public MyStruct
{
....
private :
int un_entier;
}
class Flottant : public MyStruct
{
....
private :
float un_float;
}
class DoublePrecision : public MyStruct
{
....
private :
double un_double;
}
....
MyStruct* tableau = new MyStruct[10]; // Tableau d'objet pouvant contenir des objets de la classe Entier, Flottant ou DoublePrecision
[\cpp]
Qu'en penses-tu ?
Marsh Posté le 12-07-2007 à 20:17:40
Tu ne pourrais pas essayer de faire un héritage.
Sans entrer dans le détail de la programmation, on peut imaginer de créer une classe "Article" puis des classes héritant de Article qui se nommeraient "Fruit","Voiture" ou "Animaux" et qui hériteraient de "Article". Tu pourrais ensuite créer un unique tableau destiné à stocker des objets de type "Article" et y placer des objets de chacune de ces trois classe, sans aucun problème.
J'espère avoir été à peu près clair. Cela donne quelque chose comme :
Code :
|
Qu'en penses-tu ?
PS : désolé pour le message précédent sans les bonnes balises
Marsh Posté le 12-07-2007 à 20:36:27
Salut,
Vel-Ryphon a écrit : je souhaite faire un tableau constitué de ces éléments --> pointeur |
Non, vector (edit: ou autre conteneur bien sûr)
Vel-Ryphon a écrit : problème : je veux pouvoir mettre dans le tableau, des instanciations de ce template avec des type différents |
boost::any te conviendrait peut-être?
Marsh Posté le 12-07-2007 à 21:30:37
Les différentes spécialisations d'un template sont des types qui n'ont rien en commun. Si tu veux les mettre dans un conteneur, il y a deux solutions. Soit tu encapsules dans un type adéquat (boost::any ou quelque chose de plus spécialisé), soit tu donnes une classe de base à ton template:
Code :
|
Marsh Posté le 12-07-2007 à 22:31:14
Merci pour vos réponse !
Pour l'héritage, je ne souhaite pas créer de classe, mais rester dans les struct, c'est ma norme de programmation pour mon problème
Pour boost::any, je ne connais pas du tout, est-ce que vous pourriez m'expliquer dans le détail ce que c'est ?
Poour les vector, je préfère encore une fois travailler à la mano avec un pointeur, norme de prog.
Enfin, pour l'exemple de UnProgrammeur, je ne comprends pas trop :si MyStructBase n'est pas un template, quèy place-t-on comme attribut sachant que tout attribue étant de type paramétrable ne peut pas s'y trouver ?
Marsh Posté le 12-07-2007 à 22:42:11
Vel-Ryphon a écrit : |
Norme de merde, t'as qu'a faire du C tant que tu y est
Vel-Ryphon a écrit : |
Nous non, eux oui : http://www.boost.org/doc/html/any.html
Vel-Ryphon a écrit : |
Norme de merde, le retour
Vel-Ryphon a écrit : |
Revise tes bases de C++ : http://frog.isima.fr/antoine/heritage.shtml
Marsh Posté le 12-07-2007 à 23:26:38
ReplyMarsh Posté le 13-07-2007 à 09:33:28
Vel-Ryphon a écrit : Pour l'héritage, je ne souhaite pas créer de classe, mais rester dans les struct, c'est ma norme de programmation pour mon problème |
C'est quoi cette norme? Il n'y a pas de difference entre class et struct a part l'accessibilite par defaut des membres et des classes de base.
Citation : Pour boost::any, je ne connais pas du tout, est-ce que vous pourriez m'expliquer dans le détail ce que c'est ? |
Citation : Poour les vector, je préfère encore une fois travailler à la mano avec un pointeur, norme de prog. |
Tu es sur que tu ne veux pas programmer en assembleur?
Citation : Enfin, pour l'exemple de UnProgrammeur, je ne comprends pas trop :si MyStructBase n'est pas un template, quèy place-t-on comme attribut sachant que tout attribue étant de type paramétrable ne peut pas s'y trouver ? |
Tu y places ce dont tu as besoin. A priori c'est independant du parametre template puisque tu veux justement faire des manipulations independantes de celui-ci.
Marsh Posté le 13-07-2007 à 10:01:34
merci UnProgrammeur, apparemment ça marche nickel avec la solution que tu m'as proposé à la fin, et c'est exactement ce que je recherchais ^^.
Encore merci
Marsh Posté le 13-07-2007 à 10:01:41
Vel-Ryphon a écrit : Merci pour la réponse, même si elle était un peu agressive -_- |
Bah, faut juste apprendre à décoder les ":o"
Marsh Posté le 19-07-2007 à 18:01:39
Est-il possible d'ajouter des fonctions virtuelles dans le code proposé par Programmeur pour y accéder ensuite via array[i]->Truc(machin) ?
(où le type de machin correspont à celui du MyStruct en i)
Marsh Posté le 12-07-2007 à 19:28:47
Salut,
j'ai une structure template qui me permet de gérer juste le paramétrage du type (int, float, etc etc)
je souhaite faire un tableau constitué de ces éléments --> pointeur
problème : je veux pouvoir mettre dans le tableau, des instanciations de ce template avec des type différents
exemple :
-----------------------------------------
template <class type> struct MyStruct{...};
MyStruct** array;
array = new MyStruct*[10];
array[0] = new MyStruct<int>;
array[1] = new MyStruct<float>;
array[2] = new MyStruct<double>;
etc
-------------------------------------
Bien entendu, cette syntaxe ne marche pas.
Est-ce que vous savez si déjà c'est possible, et si oui quelle est la bonne syntaxe ?