Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3223 connectés 

 


Dernière réponse
Sujet : Pourquoi ca compile pas ?
deathsharp

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


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
deathsharp

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

verdoux 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.

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 ?
deathsharp 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
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 !!!
verdoux Il a pas compilé parce que ce que tu avais écrit n'était pas du c++.
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
deathsharp

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. }

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;
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)