と仮定します。メインで何度も何度も...ポインタ
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
}
クラス内のメンバーはすべて「プライベート」なので、「メイン」からアクセスできないことに気付きましたか? –
申し訳ありませんが、コードを編集してください。元の公開 – StNickolay
あなたは本当に達成しようとしていますか?関数ポインタはまったく必要ないかもしれません。 –