Предположим:Снова и снова ... Указатель на член-функции
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;
}
}
в основной:
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
}
Вы понимаете, что все ваши члены в классе являются 'private', поэтому вы не можете получить к ним доступ из' main'? –
Извините, отредактируйте код .. originaly its public – StNickolay
Что вы действительно пытаетесь достичь? Очень возможно, что вам не нужны указатели на функции. –