OVH Cloud OVH Cloud

comprends pas

7 réponses
Avatar
Quentin
Bonjour,
Pourquoi le code suivant ne fonctionne pas ?
Merci de votre aide.


class MaClasse
{
private:

int Tableau[] =
{ 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0 };
};

VC++ renvoit :
error C2059: syntax error : '{'
error C2334: unexpected token(s) preceding '{'; skipping apparent function
body

7 réponses

Avatar
Fabien LE LEZ
On Tue, 5 Aug 2003 11:06:37 +0200, "Quentin"
wrote:

class MaClasse
{
private:

int Tableau[] > { 0, 0, 0, 0, 0, 0,


Les variables membres doivent être initialisées dans le constructeur,
pas dans la définition de la classe.


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Christophe.Sanz
Fabien LE LEZ wrote:

Les variables membres doivent être initialisées dans le constructeur,
pas dans la définition de la classe.

.. à moins d'être déclarées ``static const''


bon app,
csz

Avatar
Julien Blanc
Fabien LE LEZ wrote:
On Tue, 05 Aug 2003 11:54:25 +0200, wrote:


Les variables membres doivent être initialisées dans le constructeur,
pas dans la définition de la classe.



.. à moins d'être déclarées ``static const''



Plus précisément, une variable "static const", de type entier, peut
être définie dans la définition de la classe...


je crois que ce n'est pas seulement peut mais bien *doit*. Au moins dans
certains cas.

mais tous les
compilateurs ne le supportent malheureusement pas.


j'ai mes doutes au vu de ce que j'ai dit plus haut. Sinon, comment
fait-on la chose suivante avec de tels compilateurs ?

class foo {
static const int INITIAL_SIZE=5;
T données[INITIAL_SIZE];
}

Une variable "static const" est généralement définie hors de la
définition de la classe, dans un .CPP (comme une variable globale, en
fait).


sauf si c'est un int et qu'elle est utilisée dans la déclaration de la
classe.

--
Julien Blanc. Equipe cadp. VERIMAG. Grenoble. France.



Avatar
Fabien LE LEZ
On Tue, 05 Aug 2003 13:12:40 +0200, Julien Blanc
wrote:

j'ai mes doutes au vu de ce que j'ai dit plus haut. Sinon, comment
fait-on la chose suivante avec de tels compilateurs ?

class foo {
static const int INITIAL_SIZE=5;
T données[INITIAL_SIZE];
}


On ne fait pas ;-)
En fait, il m'arrive assez rarement d'avoir des tableaux (non static)
de taille connue à la compilation.


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Christophe.Sanz
Fabien LE LEZ wrote:

[...] une variable "static const", de type entier, peut
être définie dans la définition de la classe... mais tous les
compilateurs ne le supportent malheureusement pas.

Gcc version 2.95.4 compile aussi pour des float, double...


Chanceux,
csz

Avatar
Fabien LE LEZ
On Tue, 05 Aug 2003 16:05:29 +0200, wrote:

Gcc version 2.95.4 compile aussi pour des float, double...


Mais ce n'est plus du C++, c'est du "GCC 2.95.4"...


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Richard Delorme

On Tue, 05 Aug 2003 16:05:29 +0200, wrote:

Gcc version 2.95.4 compile aussi pour des float, double...


Mais ce n'est plus du C++, c'est du "GCC 2.95.4"...


Et comme le GCC 2.95.4 n'existe pas chez GNU, il faut préciser du "GCC
2.95.4" de <distribution linux>.

--
Richard