Sign in to follow this  
hyeewang

question about Class member function calling

Recommended Posts

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

Share this post


Link to post
Share on other sites
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 5
std::cout << * ((int* )v) << std::endl; // prints arbitrary memory address

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this