modeste petite question sur ce que ca fait ... - C++ - Programmation

Marsh Posté le 06-10-2003 à 22:08:43   

Reply

Marsh Posté le 06-10-2003 à 22:14:35    

ton truc est completement foireux
 
b.A::f(2.4) ca veut strictement rien dire

Reply

Marsh Posté le 06-10-2003 à 22:17:57    

velleronnais a écrit :


il parait que c'est ambigu mais que A::f(int) peut etre appele... suis je dans le vrai ?

sauf preuve du contraire tu n'arriveras jamais à faire quoique ce soit puisque ça ne compile pas
 
tiens pour ce qui utilise un compilateur C99 vous avait la macro __func__ qui permet de récupérer le nom de la fonction englobante. ce n'est pas encore dans le C++, mais ça devrait y passer je pense. en tout cas c'est utile, si votre compilo le fait ...


Message édité par Taz le 06-10-2003 à 22:21:03
Reply

Marsh Posté le 06-10-2003 à 22:18:39    

ben je l'aurais jamais ecrit, mais pour tout te dire je tire ca d'un questionnaire sense juger le niveau du candidat en C++ ...
 
La plupart des questions sont feinteuses, mais pas trop difficiles, mais la je vois pas ce que ca veut tester comme connaissance ?!?

Reply

Marsh Posté le 06-10-2003 à 22:25:23    

de deux choses l'une :
1) tu t trompé en recopiant.
2) les gars te prennent pr un con dsl

Reply

Marsh Posté le 06-10-2003 à 22:27:10    

ben tu réponds
b non déclaré
B n'hérite pas de A etc
 
 
ça serait pas plutôt
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6.   void f (int i)  {cout << "A::f(" << i << " )" << endl;}
  7.   void f (float f) {cout << "A::f(" << f << " )" << endl;}
  8. };
  9.  
  10. class B
  11.   : public A
  12. {
  13. public:
  14.   void f(){cout << "B::f()" << endl;}
  15. };
  16. int main()
  17. {
  18.   B b;
  19.   b.f();
  20.   //  b.f(1); // erreur
  21.   b.A::f(1);
  22.   //  b.f(3.14); // erreur
  23.   b.A::f(3.14f);
  24. }


 
 
B::F() masquant les autres
 
 
g++  -Wshadow est notre ami

Reply

Marsh Posté le 06-10-2003 à 22:27:39    

Taz a écrit :

sauf preuve du contraire tu n'arriveras jamais à faire quoique ce soit puisque ça ne compile pas
 
tiens pour ce qui utilise un compilateur C99 vous avait la macro __func__ qui permet de récupérer le nom de la fonction englobante. ce n'est pas encore dans le C++, mais ça devrait y passer je pense. en tout cas c'est utile, si votre compilo le fait ...


 
 
ceusse sous VC peuvent utiliser la macro __FUNCTION__
(ce qui est effectivement tres pratique pour la gestion d'erreur)

Reply

Marsh Posté le 06-10-2003 à 22:28:23    

mais spécifique à ton compilateur [:spamafote]

Reply

Marsh Posté le 06-10-2003 à 22:29:27    

Taz a écrit :

mais spécifique à ton compilateur [:spamafote]


 
sadly [:spamafote]
ca mange pourtant pas de pain ces macros et c bien pratique

Reply

Marsh Posté le 06-10-2003 à 22:30:11    

voila le copier/coller integral de l'enonce :
 
4. What do the following snippets of code print :
 
(a) b.f();
(b) b.f(2);
(c) b.A::f(2.4);
 
given the following definitions of A & B :

Code :
  1. class A
  2. {
  3. public:
  4. void   f   (int i) {cout << "A::f(" << i << " )" << endl;}
  5. void   f   (float f) {cout << "A::f(" << f << " )" << endl;}
  6. };
  7. class B
  8. {
  9. public:
  10. void   f   () {cout << "B::f()" << endl;}
  11. };


 
reponse donnee pour le 3eme cas (les 2 1ers sont triviaux) :
 
(c) I suppose this is ambiguous, either A::f(int) candidates
 
ce qui me chiffone, c'est cette histoire d'ambiguite ... ou alors je suis une bouze en anglais ???

Reply

Marsh Posté le 06-10-2003 à 22:30:11   

Reply

Marsh Posté le 06-10-2003 à 22:32:29    

y manque forcement un morceau, on a meme pas la declaration de b :O (meme si on se doute de son type)
 
et pis
 
 I suppose this is ambiguous, either A::f(int) candidates  
 
ca sonne pas bien anglais, la aussi manque un bout

Reply

Marsh Posté le 06-10-2003 à 22:34:13    

j'ai que ca .. desole... l'enonce est tel que je l'ai file !
 
la reponse idem ...

Reply

Marsh Posté le 06-10-2003 à 22:34:29    

si o suppos que b est une instance de B :
(a) affiche B::f()
(b) ne compile pas
(c) encore moins
 
voir mon exemple pour la lever d'ambuiguité à cause du caracètre masquant de la définition de B::f()

Reply

Marsh Posté le 06-10-2003 à 22:35:47    

maintenant je suis d'accord .. je vois pas trop le but de la chose ?  
dans la mesure ou c'est cense evaluer ton niveau.. qu'est ce que ca peut reveler ce genre d'exercice?

Reply

Marsh Posté le 06-10-2003 à 22:36:36    

à blaireau blaireau et demi

Reply

Marsh Posté le 06-10-2003 à 22:36:41    

Taz a écrit :

si o suppos que b est une instance de B :
(a) affiche B::f()
(b) ne compile pas
(c) encore moins
 
voir mon exemple pour la lever d'ambuiguité à cause du caracètre masquant de la définition de B::f()


 
ok, merci

Reply

Sujets relatifs:

Leave a Replay

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