Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2597 connectés 

 


Dernière réponse
Sujet : [C++] on peut faire ça avec les templates ????????
BENB Pour le 1- il faut bien sur que tu declare des fct en virtual dans la classe de base... c'est du polymorphisme quoi !
 
Pour le 2- je suis desolee mais tu ne disais pas quelle utilisation tu voulais en faire...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
BENB Pour le 1- il faut bien sur que tu declare des fct en virtual dans la classe de base... c'est du polymorphisme quoi !
 
Pour le 2- je suis desolee mais tu ne disais pas quelle utilisation tu voulais en faire...
freewol

BENB a écrit a écrit :

1 - template <class T>
class Toto : public Bidon
{
}
 
et alors Bidon * peut pointer sur toute les classes Toto puisque toutes heritent de Bidon. c'est la methode si tu ne connais pas le type de la classe lors de la declaration de ton Pointeur
 
2-tu doit pouvoir faire  
toto<T> * pour un parametre de fonction (fonction template)
 
template <class T>
fct(toto<T> *ptr);




 
Le premier truc, t'es sur que ça marche ? Qu'un pointeur sur une classe mère peut pointer sur n'importe quelle classe dérivée ? Si c'est le cas, ça me va parfaitement ! :)
Par contre ton 2e truc m'intéresse pas, puisque je déclare un ptr global ...

freewol en effet, c'est vraiment pas bô ;) Et je suis même pas sur que ça puisse marcher ...
Et même dans ce cas, ça m'intéresse pas trop, parce que à la base, ce problème me vient du fait que j'essaie justement d'enlever un code pas très propre ... Donc si j'en remet un autre au moins aussi dèg ...
BENB 1 - template <class T>
class Toto : public Bidon
{
}
 
et alors Bidon * peut pointer sur toute les classes Toto puisque toutes heritent de Bidon. c'est la methode si tu ne connais pas le type de la classe lors de la declaration de ton Pointeur
 
2-tu doit pouvoir faire  
toto<T> * pour un parametre de fonction (fonction template)
 
template <class T>
fct(toto<T> *ptr);
wpk si je reprends le code freewol
template <typename Type> class Bidule  
     {  
     Type t;  
     };  
 
void *ptrGenerique;  
 
Et qu'ensuite je puisse faire :  
Bidule<double> B1;  
Bidule<int> B2;  
ptrGenerique = &B1;  
ptrGenerique = &B2;  
..........
dynamic_cast<Bidule<int> *>(ptrGenerique)->methode1(...);
 
c'est pas bo, c'est meme franchement crade mais je pense qu'on peut y arriver  :jap:

 

[edit]--Message édité par wpk--[/edit]

freewol

BENB a écrit a écrit :

Je ne pense pas que ce soit possible...
 
Mais fait heriter ton template d'une classe non template...
 
ou alors utilise un template...




Euh ... Je comprends pas trop ce que tu veux dire, tu pourrais préciser STP ?

BENB Je ne pense pas que ce soit possible...
 
Mais fait heriter ton template d'une classe non template...
 
ou alors utilise un template...
freewol mouais, j'y ai évidemment pensé, mais après c'est un peu plus dur de faire ptrGenerique->t ... :(
tgrx ouais mais si t'as un  
void* ptr;
 
est-ce que le compilo accepte un
 
ptr->methode(); ??
wpk enfin, on peut toujours passer par un void * :)
freewol Ben comme je l'ai dis, un pointeur qui puisse pointer sur n'importe quel template.
Par ex :  
template <typename Type> class Bidule
     {
     Type t;
     };
 
Bidule *ptrGenerique;
 
Et qu'ensuite je puisse faire :
Bidule<double> B1;
Bidule<int> B2;
ptrGenerique = &B1;
ptrGenerique = &B2;
 
Voila ...
tgrx Si tu as une classe A:
 
template<class T>
class A {};
 
A ma connaissance, un pointeur se definit comme suit :
A<T>* ptr;
Tu es oblige de preciser le template.
wpk tu entends quoi par pointeur generique ?
freewol Voila, j'ai une classe template, et je voudrais savoir si je peux déclarer un pointeur "générique" sur cette classe, ie qui puisse pointer sur n'importe quel template de cette classe ???
J'espere vraiment qu'on peut ...

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)