question about Class member function calling

Started by
1 comment, last by hyeewang 14 years, 7 months ago
int speex_decode(void *state, SpeexBits *bits, float *out) { return (*((SpeexMode**)state))->dec(state, bits, out); } Above function declaration can be changed to be that as follows? int speex_decode(void *state, SpeexBits *bits, float *out) { return ((SpeexMode*)state)->dec(state, bits, out); } Why? Thank in advance. HyeeWang
Advertisement
Quote:Original post by hyeewang
(*((SpeexMode**)state))

Above function declaration can be changed to be that as follows?

((SpeexMode*)state)

No, you are throwing away one level of indirection this way. Let me clarify with a simpler example:

int   i =  5;int * p = &i;void* v = &p;std::cout << **((int**)v) << std::endl;   // prints 5std::cout << * ((int* )v) << std::endl;   // prints arbitrary memory address
Thank you.

This topic is closed to new replies.

Advertisement