VC ++ 6 l'errore C2059: errore di sintassi: 'costante'
Domanda
Fatto questo semplice classe con MSVC ++ 6.0
class Strg
{
public:
Strg(int max);
private:
int _max;
};
Strg::Strg(int max)
{
_max=max;
}
suona bene se lo uso in:
main()
{
Strg mvar(10);
}
Ma ora se lo uso in un'altra classe:
class ok
{
public:
Strg v(45);
};
ottengo messaggio di errore: l'errore C2059: errore di sintassi: 'costante'
Potrebbe dirmi di più per favore?
Nessuna soluzione corretta
Altri suggerimenti
Dovrebbe essere:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
variabili membro non statiche che non hanno costruttori di default (v in questo caso) dovrebbero essere inizializzati utilizzando liste di inizializzazione . Nelle funzioni (come principale) d'altra parte è possibile utilizzare la sintassi costruttore regolare.
Quello che il compilatore si lamenta è che si sta tentando di fornire istruzioni su come tonnellata un'istanza della v
membro della classe all'interno della vostra definizione di classe, che non è consentita.
Il luogo per v
instantiate sarebbe all'interno del contructor, o nella lista di inizializzazione del costruttore. Ad esempio:
All'interno del costruttore:
class ok
{
public:
Strg v;
ok() {
v = Strg(45);
}
};
In initializer elenco:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
Il modo corretto per farlo è l'ultimo (in caso contrario, v
richiederebbe anche un costruttore di default e sarà inizializzata due volte).