A voir également:
- Débutant C++ (Guki) problème avec friend
- Facebook friend mapper - Télécharger - Vie quotidienne
- Logiciel de programmation pour débutant - Guide
- Mai friend - Guide
- Formation sap débutant pdf ✓ - Forum Logiciels
- Eteindre pocket friend action - Forum Jeux vidéo
9 réponses
Salut!
J'ai exactement fait un copier coller et ça compile sans erreur sous g++. Tu compiles avec quoi?
Le résultat obtenu est 155/56
PS: Mon langage de prédilection n'est hélas pas le C++ mais un jour je m'y mettrait plus sérieusement. ;-)
J'ai exactement fait un copier coller et ça compile sans erreur sous g++. Tu compiles avec quoi?
Le résultat obtenu est 155/56
PS: Mon langage de prédilection n'est hélas pas le C++ mais un jour je m'y mettrait plus sérieusement. ;-)
Merci pour ta réponse.
Je compile avec Visual 6.0.
Bon ... je vais bien finir par comprendre ce qui se passe.
Francois
Je compile avec Visual 6.0.
Bon ... je vais bien finir par comprendre ce qui se passe.
Francois
Hello !
Le programme ci-dessus comporte une erreur (C++ standard impose int comme type de retour). Si je déclare :
ça compile et j'obtiens aussi 155/16.
Note :
1. J'utilise un compilateur commercial professionnel qui est un standard C++ contrairement à MS Visual C++ 6.
2. Ne jamais utiliser les fonctions friend quand on peut s'en passer. Ici c'est le cas !
Take care !
Le programme ci-dessus comporte une erreur (C++ standard impose int comme type de retour). Si je déclare :
int main() { }
ça compile et j'obtiens aussi 155/16.
Note :
1. J'utilise un compilateur commercial professionnel qui est un standard C++ contrairement à MS Visual C++ 6.
2. Ne jamais utiliser les fonctions friend quand on peut s'en passer. Ici c'est le cas !
Take care !
Les erreurs sont nombreuses dans ce code. Beaucoup trop de headers inutiles à mon goût dont certaines non standard puis l'écriture n'est pas claire.
Utiliser <cctype> au lieu de <ctype.h>.
De même <cstring> au lieu de <string.h>.
Les seules headers utiles sont:
<cstdlib> pour la macro EXIT_SUCCESS si on la place dans le return de la fonction main.
<iostream> pour la fonction cout.
Bon voici une 1ère version un peu épurée:
/*
test.c++
*/
#include <cstdlib>
#include <iostream>
using namespace std;
class Ratio
{
friend Ratio operator+(const Ratio&, const Ratio&);
private :
int num;
int den;
public :
Ratio (int n = 0, int d = 1) : num(n), den(d) {};
Ratio(const Ratio& r) : num(r.num), den(r.den) {};
Ratio& operator = (const Ratio&);
void print();
};
Ratio& Ratio::operator = (const Ratio& r)
{
num = r.num;
den = r.den;
return *this;
}
Ratio operator+(const Ratio& x, const Ratio& y)
{
Ratio z (x.num * y.den + y.num * x.den, x.den * y.den);
return z;
}
int main()
{
Ratio x(22, 7);
Ratio y(-3, 8)
Ratio w;
w = x + y;
w.print();
return EXIT_SUCCESS;
}
void print()
{
cout << num << '/' << den << endl;
}
Il reste encore à faire mais c'est déjà un début.
Utiliser <cctype> au lieu de <ctype.h>.
De même <cstring> au lieu de <string.h>.
Les seules headers utiles sont:
<cstdlib> pour la macro EXIT_SUCCESS si on la place dans le return de la fonction main.
<iostream> pour la fonction cout.
Bon voici une 1ère version un peu épurée:
/*
test.c++
*/
#include <cstdlib>
#include <iostream>
using namespace std;
class Ratio
{
friend Ratio operator+(const Ratio&, const Ratio&);
private :
int num;
int den;
public :
Ratio (int n = 0, int d = 1) : num(n), den(d) {};
Ratio(const Ratio& r) : num(r.num), den(r.den) {};
Ratio& operator = (const Ratio&);
void print();
};
Ratio& Ratio::operator = (const Ratio& r)
{
num = r.num;
den = r.den;
return *this;
}
Ratio operator+(const Ratio& x, const Ratio& y)
{
Ratio z (x.num * y.den + y.num * x.den, x.den * y.den);
return z;
}
int main()
{
Ratio x(22, 7);
Ratio y(-3, 8)
Ratio w;
w = x + y;
w.print();
return EXIT_SUCCESS;
}
void print()
{
cout << num << '/' << den << endl;
}
Il reste encore à faire mais c'est déjà un début.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello !
À mon avis, la fonction print() va avoir du mal à trouver num et den...
;)
Take care
À mon avis, la fonction print() va avoir du mal à trouver num et den...
;)
Take care
Bonjour,
Merci à tous pour le temps que vous m'avez consacré.
J'en suis arrivé à la conclusion qu'il y a un problème avecle compilateur que j'utilise.
Ce matin j'ai téléchagé et installé un logiciel gratuit que j'ai trouvé sur le web (dev-C++). Tous les programmes passent à la compilation.
D'après les tests que vous avez réalisés, il semblait bien que ça devait marcher.
J'ai bien étudié les programmes que vous m'avez envoyés pour ce sujet (et un autre que j'avais ouvert auparavant). Je vais tenir compte de toutes vos remarques !
En fait j'ai un autre problème avec le nouveau compilateur. C'est un problème différent et je pense que je vais ouvrir un autre sujet.
Encore merci !
Amicalement
François
Merci à tous pour le temps que vous m'avez consacré.
J'en suis arrivé à la conclusion qu'il y a un problème avecle compilateur que j'utilise.
Ce matin j'ai téléchagé et installé un logiciel gratuit que j'ai trouvé sur le web (dev-C++). Tous les programmes passent à la compilation.
D'après les tests que vous avez réalisés, il semblait bien que ça devait marcher.
J'ai bien étudié les programmes que vous m'avez envoyés pour ce sujet (et un autre que j'avais ouvert auparavant). Je vais tenir compte de toutes vos remarques !
En fait j'ai un autre problème avec le nouveau compilateur. C'est un problème différent et je pense que je vais ouvrir un autre sujet.
Encore merci !
Amicalement
François
Salut à tous,
Je viens moi aussi de rencontre la même problème. Je compiles mon programme qui contient une classe avec une fonction friend, et un message d'erreur apparait..... avec Microsoft Visual 6 C++ !
Je viens moi aussi de rencontre la même problème. Je compiles mon programme qui contient une classe avec une fonction friend, et un message d'erreur apparait..... avec Microsoft Visual 6 C++ !
Youpi ! Je viens de régler notre problème François.
Il suffit d'installer le service pack à cette adresse :
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Merci à Leor Zolman
http://www.talkroot.com/archivee/index.php/t-49863_C++_friend_function.html
Il suffit d'installer le service pack à cette adresse :
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Merci à Leor Zolman
http://www.talkroot.com/archivee/index.php/t-49863_C++_friend_function.html