J'ai du mal à initialiser un tableau constant de chaînes constantes.
À partir de week.h (affichant uniquement les pièces pertinentes):
class Week {
private:
static const char *const *days = { "mon", "tue", "wed", "thur",
"fri", "sat", "Sun" };
};
Lorsque je compile, j'obtiens l'erreur "éléments en excès dans l'initialiseur scalaire". J'ai essayé de le faire taper const char **, pensant avoir gâché le 2e placement de const, mais j'ai eu la même erreur. Qu'est-ce que je fais mal?
Tout d'abord, vous avez besoin d'un tableau, pas d'un pointeur.
static const char * const days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "Sun"};
Deuxièmement, vous ne pouvez pas initialiser cela directement dans la définition de classe. Dans la définition de classe, ne laissez que ceci:
static const char * const days[]; //declaration
Ensuite, dans le fichier .cpp, écrivez la définition
const char * const Week::days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "Sun"};
Mise à jour pour C++ 11 Vous pouvez maintenant initialiser les membres directement dans la définition de classe:
const char * const days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "Sun"};
Pour C++ 11, vous pouvez faire l'initialisation dans votre déclaration de classe, dans votre . H fichier. Cependant, vous devrez également inclure constexpr dans votre fichier . Cpp . Exemple pour le cas ci-dessus:
Dans votre fichier week.h, écrivez:
class Week {
public:
static const constexpr char* const days[] =
{ "mon", "tue", "wed", "thur","fri", "sat", "Sun" };
};
Dans votre fichier week.cpp, écrivez quelque part:
constexpr const char* const Week::days[];
Assurez-vous d'activer C++ 11, par exemple compiler avec
g ++ -std = c ++ 11 semaine.cpp