Pourquoi ca compile pas ?

Pourquoi ca compile pas ? - Programmation

Marsh Posté le 15-03-2002 à 20:34:24    

J'ai un bout de code qui veut pas compiler et je comprends pas pourquoi.
Apparement il veut pas que j'utilise de constructeur avec arguments pour initialiser une donnée membre d'une classe
 
cf le code suivant qui plante a la ligne "A a(4);"
 
 
class A
{
public:
 A(int c)  { _c = c;};
private:
 int _c;
};
 
class B
{
public:
 B() {};
private:
 A a(4);
 
};
 
 
void main(int argc, char ** argv)
{
 B b;
}

Reply

Marsh Posté le 15-03-2002 à 20:34:24   

Reply

Marsh Posté le 15-03-2002 à 20:45:39    

Code :
  1. class A
  2. {
  3. public:
  4. A(int c)  { _c = c;};
  5. private:
  6. int _c;
  7. };
  8. class B
  9. {
  10. public:
  11. B() : a( 4 )
  12. {};
  13. private:
  14. A a;
  15. };
  16. void main(int argc, char ** argv)
  17. {
  18. B b;
  19. }


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 15-03-2002 à 20:54:02    

putain !!
j'avais pas pensé a ca !
bravo deathsharp, je vois qu'il n'y a pas que des blaireaux sur HFR
 
ceci dit j'aimerais comprendre du point de vue du fonctionnement du compilo pourquoi mon code n'est pas bon.
tu peux m'expliquer ca stp ? ca m'interesse vraiment beaucoup

Reply

Marsh Posté le 15-03-2002 à 21:00:57    

Il a pas compilé parce que ce que tu avais écrit n'était pas du c++.

Reply

Marsh Posté le 15-03-2002 à 21:04:30    

vachement constructif la reponse !! je sais bien que c'est pas du C++, sinon ca compilerait
 
pour que ca ne soit pas du C++, c'est qu'il y a une raison!  
cette raison fait que le compilo ne PEUT pas compiler ce code.
 
quelle est cette raison ?
à moins que ca ne soit qu'une convention syntaxique
 
deathsharp stp !!!

Reply

Marsh Posté le 15-03-2002 à 21:06:14    

ca s'appelle la norme c++ :D
on a pas le droit de faire. jamais de declaration de variable dans la decl de la classe. tu dois forcement le faire a l'aide de constructeur.
en esperant avoir repondu a la question


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 15-03-2002 à 21:13:08    

je vais expliquer un peu mieux ce que je veux dire
 
par exemple : la norme C++ dit que dans le corps d'une fonction statique membre d'une classe, on ne peut appeler dans la meme classe que des fonctions elles aussi statiques.
pourquoi ? parce que dans une fonction statique on perd le pointeur this, donc on ne peut plus appeler de methodes non statiques (qui ont besoin d'un this)
 
c'est dans la norme C++ et il y a une raison claire qui explique pourquoi c'est dans la norme.
 
ma question : est ce que pour mon probleme il y a une raison claire qui fait que ca ne PEUT pas marcher ou alors ca pourrait tres bien marcher mais Strustroup a décidé que c'est pas du beau code donc c'est interdit ?

Reply

Marsh Posté le 15-03-2002 à 21:20:17    

Le seul type de membre que tu peux définir dans un corps de classe est un membre statique, const, de type entier (

Code :
  1. static const int toto = 1;

)
C'est la norme, ça s'explique pas, c'est comme ça.

Reply

Marsh Posté le 15-03-2002 à 21:48:26    

Oualb a écrit a écrit :

je vais expliquer un peu mieux ce que je veux dire
 
par exemple : la norme C++ dit que dans le corps d'une fonction statique membre d'une classe, on ne peut appeler dans la meme classe que des fonctions elles aussi statiques.
pourquoi ? parce que dans une fonction statique on perd le pointeur this, donc on ne peut plus appeler de methodes non statiques (qui ont besoin d'un this)
 
c'est dans la norme C++ et il y a une raison claire qui explique pourquoi c'est dans la norme.
 
ma question : est ce que pour mon probleme il y a une raison claire qui fait que ca ne PEUT pas marcher ou alors ca pourrait tres bien marcher mais Strustroup a décidé que c'est pas du beau code donc c'est interdit ?  




dans une fonction static tu na pas de this du tout
normal que tu peux pas appeler les autres fonctions.
 
et une raison claire... ben c comme ca.
faut bien que qq aie definie ca un jour nan?
 
c comme quand tu apprends l'anglais, ya bien des trucs que tu dois pas faire et d'autre que tu dois faire (les accord...)
 
si ca va pas avec ca ben... fait du yoga ca t'aidera ptetre :D


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Sujets relatifs:

Leave a Replay

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