Click here to Skip to main content
15,905,028 members

Comments by Kumar Anitesh (Top 2 by date)

Kumar Anitesh 18-Oct-13 5:16am View    
Now i wrote the code as:
class Adapter
{
public:
int (AdapteeOne::*fnptrOne)();
int (AdapteeTwo::*fnptrTwo)();
Adapter(AdapteeOne* adone)
{
pAdOne = new AdapteeOne();
fnptrOne = &(pAdOne->Responce1);
}
Adapter(AdapteeTwo adtwo)
{
pAdTwo = new AdapteeTwo();
fnptrTwo = &(pAdTwo->Responce2);
}
void AdapterExecute()
{
fnptrOne();
}
private:
AdapteeOne* pAdOne;
AdapteeTwo* pAdTwo;

};
But, i am getting; error C2276: '&' : illegal operation on bound member function expression; along with the previous error message.
This could mean that '&' operator is not able to create a function pointer out of "pAdOne->Responce1".

Does it mean that we can`t have a function pointer in some ClassA; which could point to a non-static function present in another ClassB?
Kumar Anitesh 18-Oct-13 4:20am View    
Hi Cpallini,
I tried your suggestion:

void Adapter::AdapterExecute()
{
fnptrOne();
}

But i am getting compilation error saying:
error C2064: term does not evaluate to a function taking 0 arguments.
The error statement is very confusing. Please comment.