Pourquoi ca compile pas ? - Programmation
Marsh Posté le 15-03-2002 à 20:45:39
Code :
|
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
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++.
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 !!!
Marsh Posté le 15-03-2002 à 21:06:14
ca s'appelle la norme c++
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
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 ?
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 :
|
)
C'est la norme, ça s'explique pas, c'est comme ça.
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
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;
}