[C++] pb avec un return d une fonction dans une class

pb avec un return d une fonction dans une class [C++] - C++ - Programmation

Marsh Posté le 14-01-2004 à 03:40:45    

Code :
  1. class Cl_date
  2. //============
  3. {
  4. public :
  5. ...
  6. int nb_jour (int const date_d, int const date_f)
  7.   {
  8.   nb_jour = 0;
  9. ...
  10.   return nb_jour;
  11.   }
  12. };
  13. void main ()
  14. //=======================================================
  15. {
  16. Cl_date date ();
  17. ...
  18. int date_d ;
  19. date_d = date.nb_jour (date_d,date_f);
  20. }
  21. }

 
il me met : "error C2228: left of '.nb_jour' must have class/struct/union type"???
qlq peut il m aidé plzzz car la je pete un plomb depuis + de 3 h

Reply

Marsh Posté le 14-01-2004 à 03:40:45   

Reply

Marsh Posté le 14-01-2004 à 07:14:44    

t'as pas l'impression d'avoir 26 bordels qui s'appellent pareil ?
 
et c'est int main
 
et tu peut faire directement l'initialisation de ton int

Reply

Marsh Posté le 14-01-2004 à 08:54:38    

Et surtout, "Cl_date date();" ne déclare pas une variable mais une fonction :D
 
Ne met pas les parenthèses car ici elles ne servent pas.

Reply

Marsh Posté le 14-01-2004 à 09:29:22    

int nb_jour (int const date_d, int const date_f)  
      {  
        nb_jour = 0;
 
>> c quoi ca ? depuis qd une fonction est egale a 0 (a part virtuelle pure)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 14-01-2004 à 12:48:46    

Kristoph a écrit :

Et surtout, "Cl_date date();" ne déclare pas une variable mais une fonction :D
 
Ne met pas les parenthèses car ici elles ne servent pas.


 
JE T AIME  :love:  
 
forcement puisque je ne l initialise pas!
thx Kristoph

Reply

Marsh Posté le 14-01-2004 à 12:51:08    

Effective STL Item 6: Be alert for C++'s most vexing parse.
 
http://www.awprofessional.com/cata [...] CAC842101}

Reply

Marsh Posté le 14-01-2004 à 12:55:39    

c'est pas du C++, c'est de la compatibilité de merde avec le C

Reply

Marsh Posté le 14-01-2004 à 12:56:24    

Comment ça ?

Reply

Marsh Posté le 14-01-2004 à 12:58:27    

ben en C vieille mode, on déclarait localement la fonction utilisée. Et le mecs du C cassent toujours les couilles pour des connneries -> faut que ça passe en C++, donc la norme dit que tout ce qui "looks like, tasts likes, sounds like a declaration of a function is one"

Reply

Marsh Posté le 14-01-2004 à 13:02:35    

Taz a écrit :

ben en C vieille mode, on déclarait localement la fonction utilisée. Et le mecs du C cassent toujours les couilles pour des connneries -> faut que ça passe en C++, donc la norme dit que tout ce qui "looks like, tasts likes, sounds like a declaration of a function is one"


 
En effet. Je connaissais cette règle bizarre, mais je savais pas que c'était pour rester compatible avec le C qu'elle avait été mise en place.

Reply

Marsh Posté le 14-01-2004 à 13:02:35   

Reply

Marsh Posté le 14-01-2004 à 13:11:36    

en tout cas merci a vous tous ;)

Reply

Marsh Posté le 14-01-2004 à 17:17:37    

Code :
  1. char * nom_mois ()
  2. //---------------------
  3. {
  4.  char * A_mois;
  5.  switch (mm) {
  6.   case 1  : A_mois = "Janvier" ;break;
  7.   case 2  : A_mois = "Fevrier" ;break;
  8.   case 3  : A_mois = "Mars" ;break;
  9.   case 4  : A_mois = "Avril" ;break;
  10.   case 5  : A_mois = "Mai" ;break;
  11.   case 6  : A_mois = "Juin" ;break;
  12.   case 7  : A_mois = "Juillet" ;break;
  13.   case 8  : A_mois = "Aout" ;break;
  14.   case 9  : A_mois = "Septembre" ;break;
  15.   case 10 : A_mois = "Octobre" ;break;
  16.   case 11 : A_mois = "Novembre" ;break;
  17.   case 12 : A_mois = "Decembre" ;break;
  18.  }// end switch
  19.  return A_mois;
  20. }


 
le return A_mois c'est bon ? car une fois la fonction nom_mois ()finie il est libéré non ?
 

Reply

Marsh Posté le 14-01-2004 à 17:31:07    

Code :
  1. const char * nom_mois ()
  2.   static const char *mois[12]={ ... };
  3.   // vérification de mm  
  4.   // d'ailleurs c'est quoi mm ?
  5.   return mois[mm];
  6. }

Reply

Marsh Posté le 14-01-2004 à 19:56:24    

mm est une variable privée de ma class ou j y stock un numero de mois entre 1 et 12 compris

Reply

Marsh Posté le 14-01-2004 à 19:57:31    

pq tu mets static ? dans ce cas ci je vois pas

Reply

Marsh Posté le 14-01-2004 à 20:02:51    

quel intérêt du vois à pas le mettre static ?

Reply

Marsh Posté le 14-01-2004 à 20:06:20    

mouai ok mais je ne vois pas la raison quand meme

Reply

Marsh Posté le 14-01-2004 à 20:10:20    

ben c'est un invariant de la classe. ça me suffit comme raison

Reply

Marsh Posté le 14-01-2004 à 20:37:27    

char * nom_mois ()
A_mois = "Janvier" ;
 
attention ! on a perdu l'information de constance !


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 14-01-2004 à 20:39:31    

d'ailleurs cette fonction peut sans doute être const

Reply

Marsh Posté le 14-01-2004 à 22:23:28    

j'ai aussi un pb avec une fonction que je dois faire. Elle consiste a incrementer ou decrementer une date donnee en parametre par un nombre de jour donné aussi en parametre.
ex : fonction (long int date, int nb_jour )
 
qlq un a t il une idee sur l algorithme?

Reply

Marsh Posté le 15-01-2004 à 15:43:29    

comment est codée ta date ? si c'est le nombre de jour depuis le 1er janvier chai pas quoi, il suffit de faire  

Code :
  1. long int result_date = date + nb_jour;


sinon, si c'est en secondes par exemple depuis le 1er jan chai pas quoi, tu fais

Code :
  1. long int result_date = date + nb_jour * 24/*nb heures*/ * 60/*nb min*/ * 60 /*nb sec*/;


etc...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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