"const" cause un segfault
Salut à tous,
j'ai une petite question. En ce qui me concerne j'ai toujours pensé que le mot clé "const" servait seulement à rendre une variable "non modifiable". Mais il faut croire que j'ai loupé quelques chose d'important!
voici un bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| typedef long printstring_t(void);
typedef struct _ObjVtbl {
printstring_t * printstring;
} ObjVtbl;
typedef struct _Obj {
IExampleVtbl * lpvtbl;
} Obj;
long printstring(void)
{
return(0);
}
static const ObjVtbl Obj_vtbl = { printstring };
int main(void)
{
Obj * obj;
obj = HeapAlloc(GetProcessHeap(), 0, sizeof(IExample));
obj->lpvtbl->printstring = printstring;
obj->lpvtbl->printstring();
return(0);
} |
Pour ceux qui l'auront compris, j'ai volontairement omis les "this" et consor mais en gros j'essaye de faire un objet C++ en C (J'arrive pas à le lâcher :P). Bref...
Question simple : pourquoi le const me crée un SEGFAULT?
EDIT : Je précise que le compilo m'avertit bien du schmilblik (c'est plus clair avec gcc).
cl : warning C4090 : ' =' : different 'const' qualifiers.
gcc : error : assignment discards qualifiers from pointer target type.
Merci.