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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ). 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.