Compilation avec dev C++

nsoualem Messages postés 4 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 26 mars 2003 - 9 févr. 2003 à 22:50
cs_davidsm Messages postés 35 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 12 novembre 2004 - 10 févr. 2003 à 00:03
je fais une déclaration comme suit:
friend vecteur<T> operator*(T,const vecteur<T>&)

dans mon main
je l'appelle comme suit:
vecteur<float> u(2);
u[0]=3.14;
cout<<2*u;(j'ai crée une classe vectorielle!)
sous linux(g++) ca roule!!!!!
mais sous dev C++
j'ai l'erreur suivante:
no match for int * vecteur<float> &
mais si je fais
cout<<float(2)*u;
ca marche!!!!
Ok 2 est entier, mais bon par défaut c'est également un
float mince!!!!!!Alors je comprends pas...
Je voulais commencer à programmer sous un environnemet windows mais la c raté!!!!

merci à tous!!!!
et vive Cppfrance!!!
Nadir. :)

2 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
9 févr. 2003 à 23:50
Bonjour,
il manque pas mal de choses dans ton extrait
j'ai comblé les trous à ma façon
j'ai laissé tes messages dans le texte
je n'ai pas de problème avec ce code sous VC++6 suivant

#include
#include <vector>//pour rapidement faire ton vecteur
using namespace std;

//la classe template du vieuxLion
template <class T> class vecteur
{
friend vecteur<T> operator*(T t,const vecteur<T>& v)
{ vecteur vv(v);
for (int i=0; i<vv.v_.size(); i++) vv.v_[i]*=t;
return vv;
}
friend ostream& operator<<(ostream& os, const vecteur<T>& v);
private:
vector<T> v_;
public:
vecteur(int dim=0) {v_.reserve(dim);}
T& operator[](int index){ return v_[index];}
};

template <class T> ostream& operator<<(ostream& os, const vecteur<T>& v)
{for (int i=0; i<v.v_.size(); i++) os << v.v_[i]; return os;}

//je fais une déclaration comme suit:

//dans mon main
//je l'appelle comme suit:
int main()
{
vecteur<float> u(2);
u[0]=3.14F;// avec F retirons le warning (vieuxLion)
cout<<2*u;//(j'ai crée une classe vectorielle!)
//sous linux(g++) ca roule! mais sous dev C++ j'ai l'erreur suivante:
// no match for int * vecteur<float> &
// mais si je fais
cout<<float(2)*u;
//ca marche!!!!
//Ok 2 est entier, mais bon par défaut c'est également un
//float mince!!!!!!Alors je comprends pas...
//Je voulais commencer à programmer sous un environnemet windows mais la c raté!!!!

return 0;
}

j'espère que ça t'aidera ... :)
0
cs_davidsm Messages postés 35 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 12 novembre 2004
10 févr. 2003 à 00:03
Vieux lion tu es un bon !

Avec 4 caractères tu sais faire un source qui marche.

Il faut être prudent sur les accusations des plateformes !
0
Rejoignez-nous