 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
heinquoi Guest
|
Posted: Sat May 08, 2004 11:01 am Post subject: sécurisation de code: utilisation de const |
|
|
Bjr,
J'ai des données dont je connait pas au moment de la compilation leur
contenu. Une fois initialisé elle garde la meme valeur:
class ClassWindows
{
public:
LPCTSTR lpsNomApp, lpsTitre; //ICI
HINSTANCE hInst;//ICI
HWND hWnd;//ICI
MSG message;//ICI
int nCmdShow;//ICI
WNDCLASS wc;
void BoucleTransMes ();
bool EnregistrementFenetre ();
static LRESULT CALLBACK WndProc (HWND hWnd,
UINT uMsg, WPARAM wParam,LPARAM lParam);
ClassWindows (LPCTSTR, LPCTSTR, HINSTANCE, int );
~ClassWindows(){}
};
je les initialise lors de l'appel au constructeur.
n'y aurait il pas une solution plus sur avec const, pour qu'une fois
initalisé, je ne puisse pas les modifier, avec const par exemple.Merci pour
votre aide.
Heinquoi
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Sat May 08, 2004 11:22 am Post subject: Re: sécurisation de code: utilisation de const |
|
|
Dans news:409cbdf8$0$27682$636a15ce (AT) news (DOT) free.fr,
heinquoi <nospam*heinquoi1 (AT) libertysurf (DOT) fr> a écrit :
| Quote: | Bjr,
J'ai des données dont je connait pas au moment de la
compilation leur contenu. Une fois initialisé elle garde la
meme valeur:
class ClassWindows
{
public:
LPCTSTR lpsNomApp, lpsTitre; //ICI
HINSTANCE hInst;//ICI
HWND hWnd;//ICI
MSG message;//ICI
int nCmdShow;//ICI
[...]
je les initialise lors de l'appel au constructeur.
n'y aurait il pas une solution plus sur avec const, pour qu'une
fois initalisé, je ne puisse pas les modifier, avec const par
exemple.Merci pour votre aide.
|
Si tu les initialises dans le constructeur, plus spécifiquement
dans la liste d'initialisation, tu peux simplement les déclarer
const.
class ClassWindows
{
public:
const LPCTSTR lpsNomApp, lpsTitre; //ICI
const HINSTANCE hInst;//ICI
// etc.
Mais attention, LPCTSTR c'est probablement un typedef pour des
pointeurs et il faudra que tu décides ce que tu veux qui soit
const exactement, le pointeur et/ou l'objet pointé...
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
Le Géant Vert Guest
|
Posted: Sat May 08, 2004 12:39 pm Post subject: Re: sécurisation de code: utilisation de const |
|
|
ben avant de penser au const, il faudrait je pense mettre tes données en
private, et ne fournir que des getters const ; sans setter, pas moyen de
modifier ces données à l'extérieur de la classe.
Ex. générique :
class ClassWindows
{
public:
ClassWindows(const Data &rData) : m_data(rData) { }
// + assignment operator + copy ctor + dtor
const Data &data() const { return m_data; }
private:
Data m_data;
};
depuis l'extérieur le seul moyen d'acceder à m_data est le getter, qui
est const, donc impossible de modifier quoi que ce soit.
(au passage, note que LPCSTR est un typedef ; LP = long pointer, C =
const, STR = chaine/char * => const char *)
heinquoi wrote:
| Quote: | Bjr,
J'ai des données dont je connait pas au moment de la compilation leur
contenu. Une fois initialisé elle garde la meme valeur:
class ClassWindows
{
public:
LPCTSTR lpsNomApp, lpsTitre; //ICI
HINSTANCE hInst;//ICI
HWND hWnd;//ICI
MSG message;//ICI
int nCmdShow;//ICI
WNDCLASS wc;
void BoucleTransMes ();
bool EnregistrementFenetre ();
static LRESULT CALLBACK WndProc (HWND hWnd,
UINT uMsg, WPARAM wParam,LPARAM lParam);
ClassWindows (LPCTSTR, LPCTSTR, HINSTANCE, int );
~ClassWindows(){}
};
je les initialise lors de l'appel au constructeur.
n'y aurait il pas une solution plus sur avec const, pour qu'une fois
initalisé, je ne puisse pas les modifier, avec const par exemple.Merci pour
votre aide.
Heinquoi
|
|
|
| Back to top |
|
 |
drkm Guest
|
Posted: Sat May 08, 2004 12:40 pm Post subject: Re: sécurisation de code: utilisation de const |
|
|
"heinquoi" <nospam*heinquoi1 (AT) libertysurf (DOT) fr> writes:
| Quote: | J'ai des données dont je connait pas au moment de la compilation leur
contenu. Une fois initialisé elle garde la meme valeur:
class ClassWindows
|
[...]
| Quote: | je les initialise lors de l'appel au constructeur.
n'y aurait il pas une solution plus sur avec const, pour qu'une fois
initalisé, je ne puisse pas les modifier, avec const par exemple.Merci pour
votre aide.
|
class A
{
public:
A()
: myInteger( une_valeur )
{
}
private:
int const myInteger ;
} ;
--drkm
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|