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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top