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

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

Marsh Posté le 26-11-2002 à 13:17:08    

#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 ??

Reply

Marsh Posté le 26-11-2002 à 13:17:08   

Reply

Marsh Posté le 26-11-2002 à 13:19:59    

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.

Reply

Marsh Posté le 26-11-2002 à 13:22:44    

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é

Reply

Marsh Posté le 26-11-2002 à 13:23:22    

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 ??

Reply

Marsh Posté le 26-11-2002 à 13:24:32    

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

Reply

Marsh Posté le 26-11-2002 à 14:06:37    

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....

Reply

Marsh Posté le 26-11-2002 à 14:35:25    

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...

Reply

Marsh Posté le 26-11-2002 à 16:02:13    

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

Reply

Marsh Posté le 26-11-2002 à 16:04:48    

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".

Reply

Marsh Posté le 26-11-2002 à 16:39:08    

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)

Reply

Marsh Posté le 26-11-2002 à 16:39:08   

Reply

Marsh Posté le 26-11-2002 à 16:45:38    

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. };

Reply

Marsh Posté le 26-11-2002 à 16:50:32    

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();  
};  

Reply

Marsh Posté le 27-11-2002 à 02:22:25    

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
Reply

Marsh Posté le 27-11-2002 à 08:26:01    

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
Reply

Marsh Posté le 27-11-2002 à 10:28:32    

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.)
 
;)
 

Reply

Marsh Posté le 27-11-2002 à 12:32:06    

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

Reply

Marsh Posté le 27-11-2002 à 13:41:41    

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...

Reply

Marsh Posté le 28-11-2002 à 00:08:33    

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
Reply

Marsh Posté le 29-11-2002 à 14:12:06    

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]

Reply

Marsh Posté le 29-11-2002 à 14:13:24    

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

Reply

Marsh Posté le 29-11-2002 à 15:16:52    

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...

Reply

Marsh Posté le 29-11-2002 à 15:17:04    

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...

Reply

Marsh Posté le 29-11-2002 à 16:35:21    

sale bete ! :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed