Suppose:

```
class Parser
{
  public:
  void parser1(int a, int b, int c);
  void parser2(int d, int e, int f);
  void setupPtr();

  void (Parser::*ptrParser) (int param1, int param2, int param3);
}

Parser::setupPtr()
{
   if(bla bla)
   {
       ptrParser = &Parser::parser1;
   }
   else
   {
       ptrParser = &Parser::parser2;
   }
}

```

in main:

```
int main(argv, argc)
{
   Parser parser;
   parser.setupPtr();
// first case
   parser.ptrParser(some paramps); // error!    error C2064: term does not evaluate to a function taking 3 arguments
// second case
   parser.*ptrParser(some paramps); // error!   'ptrParser' : undeclared identifier
// third case
   (parser.*ptrParser)(some paramps); // error!     'ptrParser' : undeclared identifier

}

```