VC ++ 6 erreur C2059: erreur de syntaxe: 'constante'
Question
Fait cette classe simple avec MSVC ++ 6.0
class Strg
{
public:
Strg(int max);
private:
int _max;
};
Strg::Strg(int max)
{
_max=max;
}
bon sons si je l'utilise dans:
main()
{
Strg mvar(10);
}
Mais maintenant Si je l'utilise dans une autre classe:
class ok
{
public:
Strg v(45);
};
Je reçois un message d'erreur: C2059 erreur: erreur de syntaxe: 'constante'
Pourriez-vous me dire plus s'il vous plaît?
Pas de solution correcte
Autres conseils
Devrait être:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
variables membres non statiques qui n'ont pas des constructeurs par défaut (v dans ce cas) doivent être initialisés avec listes d'initialisation . Dans les fonctions (comme principal) d'autre part, vous pouvez utiliser la syntaxe constructeur régulière.
Qu'est-ce que le compilateur se plaint est sur le point que vous essayez de donner des instructions sur la façon dont ton instancier le membre de la classe v
dans votre définition de classe, ce qui est interdit.
L'endroit v
instancier serait à l'intérieur du contructor, ou dans la liste des initialiseur du constructeur. Par exemple:
constructeur Intérieur:
class ok
{
public:
Strg v;
ok() {
v = Strg(45);
}
};
Dans la liste initialiseur:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
La bonne façon de le faire est le dernier (sinon, v
nécessiterait également un constructeur par défaut et sera initialisé deux fois).