2010-06-11 6 views
7

Desidero definire una struttura, in cui verranno memorizzate alcune costanti matematiche.
Ecco quello che ho adesso:Struttura statica in C++

struct consts { 
    //salt density kg/m3 
    static const double gamma; 
}; 

const double consts::gamma = 2350; 

Funziona bene, ma non ci sarebbe più di 10 costanti in virgola mobile, in modo da non vuole scritto 'static const' prima di ciascuno di essi. E definire una cosa del genere:

static const struct consts { 
    //salt density kg/m3 
    double gamma; 
}; 

const double consts::gamma = 2350; 

E guardare bene, ma ho avuto questi errori:
1. Gli funzione ridichiarazione non ammessi
2. un membro di dati non statico, non può essere definita al di fuori della sua classe

Mi chiedo se esiste un modo C++ per farlo?

+0

10 non è affatto. Basta copiare e incollare la parte 'static const double'. –

+1

Sono convinto che copiare e incollare nel codice sia il più grande male :) – Andrew

+3

Copia-incolla di __logic__ è un grande male. Copia-incolla di const statico doppio ... non così tanto. Se hai bisogno di 10 consts, devi dichiararli. – jmucchiello

risposta

27

Utilizzare uno spazio dei nomi anziché tentare di creare una struttura in uno spazio dei nomi.

namespace consts{ 
    const double gamma = 2350; 
} 

Anche il metodo di accesso ai dati ha esattamente la stessa sintassi. Così, per esempio:

double delta = 3 * consts::gamma; 
+0

Scusate, ho timbrato la vostra modifica :( –

+0

@David Nessun problema, grazie per la modifica Ho quasi perso il fatto che avevo dimenticato di inserire un tipo lì – Yacoby

+0

Grazie, è esattamente quello che voglio :) – Andrew

10

Sembra che tu davvero voglia uno spazio dei nomi:

namespace consts { 
    const double gamma = 2350.0; 
    // ... 
} 

Tranne Mi piacerebbe provare a venire con un nome migliore di consts per esso.

+0

Mi dispiace per la modifica, ho fatto clic sul pulsante sbagliato. –