Overload ou void* [Résolu]

Signaler
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
-
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
-
Salut.
Vaut-il mieu creer une fonction avec comme parametre un pointeur void et traiter chacun des type avec un overload de cette fonction ?

Peutetre y a ti-il quelque chose que j'ai mal compris ... mais théoriquement ca fait la meme chose non?

Si l'informatique été de l'alcool il y aurait des genies partout

7 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Les templates sont fait pour ca:

template <class T>
T Addition(const T & _p1, const T & _p2)
{
return (_p1 + _p2);
}

int main(...)
{
    int result = Addition(4, 8);
    float value = Addition<float>(2.0f, 3.14f);
return 0;
}
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Hein ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Comment veux tu faire la différence entre les types entré via un void * ?
On peut bien sur utiliser un second paramètre qui contiendra le type mais bon...

T'as le choix:
Soit tu fais une fonction qui prend un void * et le type en argument. Dans ce cas, faudra faire un switch case et traiter chaque type. Fera une grosse fonction et des tests seront à faire.

Soit tu fais des fonctions surchargées. Fera une multitude de fonctions mais en object, tout ceci est transparent à l'utilisateur.

C++ (@++)<!--
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Deux! Et à trois on s'arrete!

Il y a en effet quelques choses que tu as du mal comprendre. En tout cas ta question n'est pas claire.
Sois plus explicite.

Shell
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Ah et:
"Peutetre y a ti-il quelque chose que j'ai mal compris ... mais théoriquement ca fait la meme chose non?"
Non ça ne fait pas la même chose du tout.

Petite précision:
Quand je dis, "passer le type", c'est comme ceci:

#define TYPE_CHAR 1
...
int fonc (void *v, int type)
{
    switch(type) {
       case TYPE_CHAR:
          break;
    ...
}

C++ (@++)<!--
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
Mh ok , en fait je me demandais juste si pour appeler une fonction qui peut avoir a traiter plusieurs type de variables(par exemple une fonction d'addition�11; qui pourrait prendre un float ou un int) il vallait mieu switch le type de variable ou faire un overload sur chaque type , je pense que je vais faire plusieurs overloads.
Merci a vous.
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
En voila une reponse qu'elle me plait !
Merci beaucoup je vais chercher de la doc a ce propos .

Si l'informatique été de l'alcool il y aurait des genies partout