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

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] template: j'ai merdé, help siouplait

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] template: j'ai merdé, help siouplait

n°253918
MrX
Posté le 26-11-2002 à 13:17:08  profilanswer
 

#include <iostream>
#include <stdlib.h>
 
template <class a_cls> class divs
{
    public:
     
    a_cls div(a_cls x, a_cls y);
    a_cls sous(a_cls x, a_cls y);
};
 
template <class a_cls> a_cls divs<a_cls>::div(a_cls x, a_cls y)
{
    return (x/y);
}
 
template <class a_cls> a_cls divs<a_cls>::sous(a_cls x, a_cls y)
{
    return (x-y);
}
int main(int argc, char *argv[])
 
{
   
  divs<double> a;
  a.div(10, 5);
  cout<<a;
  return 0;
  system("PAUSE" );
}
 
 
ben vala c le code ki tue pour essayer les templates mais la ou il ve plus compilé c pour le "cout<<a;" , me dit ke il connais pas le type de variable, alors comment je fais afficher mon resultat ? j'ai essayer "cout<<(float) a;" ve pa, "itoa(a, b, 10)", ve po non plus. En bref, comment je fais moi pour utiliser le resultat d'un template en dehors du template ??

mood
Publicité
Posté le 26-11-2002 à 13:17:08  profilanswer
 

n°253920
lorill
Posté le 26-11-2002 à 13:19:59  profilanswer
 

MrX a écrit a écrit :

 
  return 0;
  system("PAUSE" );




j'ai pas la réponse a ta question, mais mettre un system apres le return ca va pas te servir a grand chose.

n°253923
MrX
Posté le 26-11-2002 à 13:22:44  profilanswer
 

ca c po moi c le compileur ki mets lui meme d'office pour me garder la fenetre systeme ouverte aprés que le code soit executé

n°253924
lorill
Posté le 26-11-2002 à 13:23:22  profilanswer
 

MrX a écrit a écrit :

ca c po moi c le compileur ki mets lui meme d'office pour me garder la fenetre systeme ouverte aprés que le code soit executé




 :??:  
dans ce sens la ? et ca marche ??

n°253926
MrX
Posté le 26-11-2002 à 13:24:32  profilanswer
 

ben mon compilateur il compile et ca marche, j'utilise bloodshed dev-c++ 4.9

n°253967
MrX
Posté le 26-11-2002 à 14:06:37  profilanswer
 

euh, en fait je vien de resoudre mon probleme en foutant le cout dans une fonction du template en gros :  
 
#include <iostream>
#include <stdlib.h>
 
template <class a_cls> class divs
{
    public:
     
    a_cls vr;
    a_cls div(a_cls x, a_cls y);
    a_cls sous(a_cls x, a_cls y);
    void render();
};
 
template <class a_cls> a_cls divs<a_cls>::div(a_cls x, a_cls y)
{
    vr = x/y;
    return vr;
}
 
template <class a_cls> a_cls divs<a_cls>::sous(a_cls x, a_cls y)
{
    vr = x-y;
    return vr;
}
 
template <class a_cls> void divs<a_cls>::render()
{
    cout<<vr<<endl;
}
int main(int argc, char *argv[])
 
{
   
  divs<double> a;
  a.div(10.16516, 5.16512);
  a.render();
  system("PAUSE" );
}
 
mais bon ve tjs savoir comment on fais pour exploiter les les variables declarées par un template en dehors du template sinon j'ai pa fini s'il fo ke chaque operation que je ve faire sur mes variable fo ke je les foutes dans le templates....

n°253983
BENB
100% Lux.
Posté le 26-11-2002 à 14:35:25  profilanswer
 

L'operateur <<, où est il surchargé dans ta classe divs ?
 
De plus que voulais-tu qu'il affiche ? ta classe ne comporte aucun membre ? A quoi sert-elle ? il n'y a que des methodes qui pourraient etre des fonctions globales...

n°254109
MrX
Posté le 26-11-2002 à 16:02:13  profilanswer
 

en premier, si tu pouvais utiliser plus l'anglais ca me faciliterai les choses packe en francais je pige pas grand chose a la programmation
 "operateur << surchargé" c a dire ?
membre sait po ce que ca ve dire (en tout cas connais pas l'equivalent anglais) mais mon code c t juste pour testé comment marche les templates. ce ke je voulais faire c des operation simple avec different type de variable via mon code dans le template (genre division avec int, double, float) et aprés fo bien que j'affiche le resultat voir si ca a marché, d'ou le cout<<. Et quand j'ai voulu faire un cout<< d'une variable a (divs<int> a) me dit ke le type divs<int> il pe pa l'affiché. En bref apparament le données traitée par des templates sont inutilisable en dehors du template si je les prends sans aucune modification (ptet k'y faut faire un type casting particulier ??), alors voulais savoir qu'est ce que je doit faire pour rendre les données issue d'un template "propre" pour des manip exterieur au template

n°254113
lorill
Posté le 26-11-2002 à 16:04:48  profilanswer
 

MrX a écrit a écrit :

en premier, si tu pouvais utiliser plus l'anglais ca me faciliterai les choses packe en francais je pige pas grand chose a la programmation




 
Ben va voir sur forum.hardware.com alors... Et sinon, tu peux toujours t'appliquer, packe lé truk ékri kom sa c lour...
Et sinon, "membre" en anglais on dirait "member" ou "attribute".

n°254137
MrX
Posté le 26-11-2002 à 16:39:08  profilanswer
 

quoi c'est si moche que ca quand j'ecris ??
euh attirbute c'est un peu moins vague pour moi mais si t'a le temps tu peux me donner un petit exemple, que je soit sur de sujet (la programation parlée, j'ai du mal, me faut du code pour bien comprendre, mais bon deja l'anglais c'est plus simple)

mood
Publicité
Posté le 26-11-2002 à 16:39:08  profilanswer
 

n°254141
lorill
Posté le 26-11-2002 à 16:45:38  profilanswer
 

tu sais ce que c'est un objet ? ben un attribut, c'est une variable membre de l'objet...
 

Code :
  1. class Toto
  2. {
  3.   int unMembre;
  4.   string unAutre;
  5.   //...
  6. };

n°254149
MrX
Posté le 26-11-2002 à 16:50:32  profilanswer
 

en gros c des variable utilisé par la class, alors qu'est qu'il me sort benb que j'ai pas de membre :
 
template <class a_cls> class divs  
{  
   public:  
     
   a_cls vr; //c'est bien un membre ca didjou
   a_cls div(a_cls x, a_cls y);  
   a_cls sous(a_cls x, a_cls y);  
   void render();  
};  

n°254768
Musaran
Cerveaulté
Posté le 27-11-2002 à 02:22:25  profilanswer
 

Code :
  1. cout<<a.vr;


Sinon:

Code :
  1. template <class a_cls>
  2. ostream& operator<<(ostream os, divs<a_cls> dv)
  3. {
  4.    os << dv.vr;
  5. return os;
  6. }
  7. //...
  8. cout<<a; //devrait marcher


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°254791
wpk
Posté le 27-11-2002 à 08:26:01  profilanswer
 

je pense qu'il voulait simplement ecrire
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. template <class a_cls> class divs
  4. {
  5.    public:
  6.  
  7.    a_cls div(a_cls x, a_cls y);
  8.    a_cls sous(a_cls x, a_cls y);
  9. };
  10. template <class a_cls> a_cls divs<a_cls>:div(a_cls x, a_cls y)
  11. {
  12.    return (x/y);
  13. }
  14. template <class a_cls> a_cls divs<a_cls>::sous(a_cls x, a_cls y)
  15. {
  16.    return (x-y);
  17. }
  18. int main(int argc, char *argv[])
  19. {
  20.  
  21. divs<double> a;
  22. double result = a.div(10, 5);
  23. //cout<<a;
  24. std::cout<<result<<std::endl;
  25. return 0;
  26. system("PAUSE" );
  27. }


Message édité par wpk le 27-11-2002 à 08:27:01
n°254847
BENB
100% Lux.
Posté le 27-11-2002 à 10:28:32  profilanswer
 

MrX a écrit a écrit :

en gros c des variable utilisé par la class, alors qu'est qu'il me sort benb que j'ai pas de membre :
 
template <class a_cls> class divs  
{  
   public:  
     
   a_cls vr; //c'est bien un membre ca didjou
   a_cls div(a_cls x, a_cls y);  
   a_cls sous(a_cls x, a_cls y);  
   void render();  
};  
 




 
Je suis desolée, je ne remmet nullement en cause ta virilité :D
 
Dans la premiere version que tu donnes :

Code :
  1. template <class a_cls> class divs
  2. {
  3.    public:
  4.    
  5.    a_cls div(a_cls x, a_cls y);
  6.    a_cls sous(a_cls x, a_cls y);
  7. };


 
Il n'y a pas pas de membres (your class hasn't any member)
Les methodes de cette classe pourraient donc etre des fonction globales. (This class' methods would better have been global functions)
 
La raison pour laquelle l'operateur << ne fonctionne pas dans ton premier exemple n'a rien a voir avec les templates, mais est lié a la surcharge de l'operateur << pour la classe divs. Mais cette classe n'ayant pas membres il est difficile de savoir comment l'implementer.
(The << operator does not work properly because it is not overloaded for the divs class. As this class has no members I could hardly propose any implementation for it.)
 
;)
 

n°254983
MrX
Posté le 27-11-2002 à 12:32:06  profilanswer
 

musaran & wpk> vala c'etait ca que je cherchait, merci =)
 
benb> mouahahaha, je ferai des programmes viriles la prochaine fois. C'est po la peine de tout me coller en anglais, mon probleme pour te donner un exemple, c'est que je comprends array, mais tableau m'a fallu le temps pour faire le lien, comme pour string que je comprends et chaine de charactéres.... Enfin cela je les comprends maintenant, mais quand par exemple tu me dis que << est surchargé, ben la je l'ai dans le slip. Si ca ve dire que le type que j'utilise aprés n'est pas supporté par le <<, un "it lacks a cast" m'aurait etait plus explicite

n°255049
BENB
100% Lux.
Posté le 27-11-2002 à 13:41:41  profilanswer
 

MrX a écrit a écrit :

musaran & wpk> vala c'etait ca que je cherchait, merci =)
 
benb> mouahahaha, je ferai des programmes viriles la prochaine fois. C'est po la peine de tout me coller en anglais, mon probleme pour te donner un exemple, c'est que je comprends array, mais tableau m'a fallu le temps pour faire le lien, comme pour string que je comprends et chaine de charactéres.... Enfin cela je les comprends maintenant, mais quand par exemple tu me dis que << est surchargé, ben la je l'ai dans le slip. Si ca ve dire que le type que j'utilise aprés n'est pas supporté par le <<, un "it lacks a cast" m'aurait etait plus explicite




 
Mais justement ce n'est pas un "cast" qui manque! mais bien une surcharge (overload) de l'operateur...

n°255757
Musaran
Cerveaulté
Posté le 28-11-2002 à 00:08:33  profilanswer
 

MrX, tu as des problèmes avec le français ?
 
Bien fait ! :fou:
Ça compensera les difficultés qu'on eu les innombrables francophones devant apprendre l'anglais en même temps que la programmation. :lol:


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°257123
MrX
Posté le 29-11-2002 à 14:12:06  profilanswer
 

lol j'ai pa de probleme avec le francais, c ma langue maternelle, mais bon je parle plus ou moins 5 langue (3 bien, 2 au stade experimentale) dont l'anglais ce qui fait que j'ai pas eu de probleme pour apprendre le vb en anglais sur le net, et pis le c++ par la suite, mais quand quelqu'un veut me traduire du code en francais, je bogue.... c po ma faute j'ai po fait exprés, ayait pitié   [:edf]

n°257125
MrX
Posté le 29-11-2002 à 14:13:24  profilanswer
 

benb> en bref ca ve dire que le << il me tire la gueule...

n°257218
BENB
100% Lux.
Posté le 29-11-2002 à 15:16:52  profilanswer
 

MrX a écrit a écrit :

benb> en bref ca ve dire que le << il me tire la gueule...




 
:??:
 
il n'a rien contre toi...
 
mais il ne connais pas ton type divs... tout simplement...

n°257219
BENB
100% Lux.
Posté le 29-11-2002 à 15:17:04  profilanswer
 

MrX a écrit a écrit :

benb> en bref ca ve dire que le << il me tire la gueule...




 
:??:
 
il n'a rien contre toi...
 
mais il ne connait pas ton type divs... tout simplement...

n°257291
MrX
Posté le 29-11-2002 à 16:35:21  profilanswer
 

sale bete ! :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] template: j'ai merdé, help siouplait

 

Sujets relatifs
Help insertion imagevb6 va t-il disparaitre ? HELP !!!!
un warnig sous devc++ help pleaseString To Char Help
Je rech des cours en francais sur les termcaps, help !help selection sql
help idhelp me !! besoin d'un coup de main (pas de catégorie)
help me !! besoin d'un coup de main (pas de catégorie)Help sur JBuilder 7 ... je suis novice ....
Plus de sujets relatifs à : [C/C++] template: j'ai merdé, help siouplait


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR