ou je suis bete (c'est tout à fait possible), ou c'est la seule combinaison que je n'ai pas testé ...
En tout cas merci.
kanze
Falk Tannhäuser wrote:
Christophe Bondoin wrote:
class Truc { public: static const char** tab; };
dans le .h, et :
const char** Truc::tab = { "a", "b" };
dans le .cpp, mais ça ne compile pas : error: initializer for scalar variable requires one element
Normal - on ne peut pas initialiser un pointeur avec deux valeurs...
J'ai essayé de déclaré comme ça : const char* tab[2];
ça ne marche pas, et d'initialiser comme ça : const char* Truc::tab[0] = "a";
C'est curieux ! Ceci doit fonctionner (tableau d'une dimension comportant des pointeurs constants sur des chaînes constantes) :
Il y a au moins deux erreurs : on ne peut pas déclarer un tableau statique de taille zéro -- il faut au moins un élément, et un tableau est un aggloméré, dont l'initialisateur exige des {...}.
Je sais que le posteur original ne l'avait pas, mais s'il veut un tableau const, il lui faut aussi le deuxième const, que j'ai mis en commentaires. (Et s'il ne veut pas que le tableau soit const, je conseillerais vivement un tableau de std::string, plutôt que des pointeurs.)
// dans le .h class Truc { public: static char const* const tab[2]; };
// dans le .cpp char const* const Truc::tab[] = { "a", "b" };
Voici une autre façon de faire, avec un tableau de 2 dimensions :
class Truc { public: static char const tab[2][N]; };
char const Truc::tab[2][N] = { "a", "b" };
ou 'N' est la taille maximale de tes chaînes de caractères (comprenant le ' ' à la fin).
C'est un véritable tableau à deux dimensions, et non un tableau de pointeurs. Mais je ne sais pas si c'est un si bonne idée si ce qu'il veut réelement est un tableau de chaînes.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Falk Tannhäuser wrote:
Christophe Bondoin wrote:
class Truc {
public:
static const char** tab;
};
dans le .h, et :
const char** Truc::tab = { "a", "b" };
dans le .cpp, mais ça ne compile pas :
error: initializer for scalar variable requires one element
Normal - on ne peut pas initialiser un pointeur avec deux valeurs...
J'ai essayé de déclaré comme ça :
const char* tab[2];
ça ne marche pas, et d'initialiser comme ça :
const char* Truc::tab[0] = "a";
C'est curieux ! Ceci doit fonctionner (tableau d'une dimension
comportant des pointeurs constants sur des chaînes
constantes) :
Il y a au moins deux erreurs : on ne peut pas déclarer un
tableau statique de taille zéro -- il faut au moins un élément,
et un tableau est un aggloméré, dont l'initialisateur exige des
{...}.
Je sais que le posteur original ne l'avait pas, mais s'il veut
un tableau const, il lui faut aussi le deuxième const, que j'ai
mis en commentaires. (Et s'il ne veut pas que le tableau soit
const, je conseillerais vivement un tableau de std::string,
plutôt que des pointeurs.)
// dans le .h
class Truc
{
public:
static char const* const tab[2];
};
// dans le .cpp
char const* const Truc::tab[] = { "a", "b" };
Voici une autre façon de faire, avec un tableau de 2 dimensions :
class Truc
{
public:
static char const tab[2][N];
};
char const Truc::tab[2][N] = { "a", "b" };
ou 'N' est la taille maximale de tes chaînes de caractères
(comprenant le ' ' à la fin).
C'est un véritable tableau à deux dimensions, et non un tableau
de pointeurs. Mais je ne sais pas si c'est un si bonne idée si
ce qu'il veut réelement est un tableau de chaînes.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
dans le .cpp, mais ça ne compile pas : error: initializer for scalar variable requires one element
Normal - on ne peut pas initialiser un pointeur avec deux valeurs...
J'ai essayé de déclaré comme ça : const char* tab[2];
ça ne marche pas, et d'initialiser comme ça : const char* Truc::tab[0] = "a";
C'est curieux ! Ceci doit fonctionner (tableau d'une dimension comportant des pointeurs constants sur des chaînes constantes) :
Il y a au moins deux erreurs : on ne peut pas déclarer un tableau statique de taille zéro -- il faut au moins un élément, et un tableau est un aggloméré, dont l'initialisateur exige des {...}.
Je sais que le posteur original ne l'avait pas, mais s'il veut un tableau const, il lui faut aussi le deuxième const, que j'ai mis en commentaires. (Et s'il ne veut pas que le tableau soit const, je conseillerais vivement un tableau de std::string, plutôt que des pointeurs.)
// dans le .h class Truc { public: static char const* const tab[2]; };
// dans le .cpp char const* const Truc::tab[] = { "a", "b" };
Voici une autre façon de faire, avec un tableau de 2 dimensions :
class Truc { public: static char const tab[2][N]; };
char const Truc::tab[2][N] = { "a", "b" };
ou 'N' est la taille maximale de tes chaînes de caractères (comprenant le ' ' à la fin).
C'est un véritable tableau à deux dimensions, et non un tableau de pointeurs. Mais je ne sais pas si c'est un si bonne idée si ce qu'il veut réelement est un tableau de chaînes.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34