PDA

Visualizza la versione completa : [C++] Modo "pulito" di dichiarare le costanti


giuseppe500
30-05-2012, 17:37
ciao.
Vorrei trovare un metodo per dichiarare le costanti, ho letto che un buon metodo quello di dichiararle nella classe come private static.
Io fino ad adesso ho sempre usato le macro(#define CONST_AGE 33).
E' un metododo piu pulito il primo?
voi cosa consigliate?
Inoltre ho visto che google ha messo a disposizione per visual studio una macro che controlla che il codice segua degli standard e da dei messaggi che rimandano alle righe di codice non standardizzato , ce ne sono altri oltre a quello di google?
mi sembra una buona idea .
E per le costanti globali ? bisognerebbe utilizzare un namespace globale o una classe creata per questo?
grazie.

shodan
30-05-2012, 18:33
Di solito io faccio cos.


struct FileFlags {
static const int read = 1;
static const int write = 2;
/* ... etc ... */
};

struct StreamFlags {
static const int read = 1;
static const int write = 2;
/* ... etc ... */
};


Nome e scopo di ci che rappresenta non sono importanti. Quel che importa : static const arithmetic_type... (funziona anche con bool).

MItaly
30-05-2012, 19:17
Anche i namespace con dentro dei const global (o anche degli enum, a seconda del caso) dovrebbero andare bene per lo scopo.

RooccoXXI
01-06-2012, 20:58
Per le costanti globali credo che in C++11 la maniera pi pulita sia utilizzare la parola chiave


constexpr

oregon
01-06-2012, 21:06
Scusa Rocco, anche se pu essere un fatto lodevole, fare tutti questi interventi sul C++.11 non che sia produttivo per i thread che, comunque, trattano problematiche relative allo standard precedente.

Sembra quasi spam ... :-)

Scara95
01-06-2012, 21:12
Originariamente inviato da oregon
Scusa Rocco, anche se pu essere un fatto lodevole, fare tutti questi interventi sul C++.11 non che sia produttivo per i thread che, comunque, trattano problematiche relative allo standard precedente.

Sembra quasi spam ... :-)

Ti do ragione, comunque riconosco anche che sarebbe utile un uso pi diffuso dello standard 11...

Caiodark
01-06-2012, 22:29
Originariamente inviato da giuseppe500
ciao.
Vorrei trovare un metodo per dichiarare le costanti, ho letto che un buon metodo quello di dichiararle nella classe come private static.
Io fino ad adesso ho sempre usato le macro(#define CONST_AGE 33).
E' un metododo piu pulito il primo?
voi cosa consigliate?


S, il primo un metodo pi pulito e consigliabile. Nel primo caso la costante una variabile tipizzata mentre nel secondo (la macro) non hai controllo del tipo.

MItaly
01-06-2012, 22:34
Originariamente inviato da Caiodark
S, il primo un metodo pi pulito e consigliabile. Nel primo caso la costante una variabile tipizzata mentre nel secondo (la macro) non hai controllo del tipo.
Ma soprattutto, la #define sostituisce dovunque, mentre le variabili const stanno nel loro scope.

shodan
02-06-2012, 00:28
Originariamente inviato da Scara95
Ti do ragione, comunque riconosco anche che sarebbe utile un uso pi diffuso dello standard 11...
Il grosso problema il supporto attuale dei compilatori. A parte g++ aggiornato quasi mensilmente, gli altri implementano qualcosa in ordine sparso.
La situazione attuale si trova qui:
http://wiki.apache.org/stdcxx/C++0xCompilerSupport
per cui al momento il C++11 letteralmente compiler dependent.

Loading