Hello:
Given that the following two examples compile without any errors:
Code:class Tester { bool FunctionA(int) { return true; } bool FunctionA(int, int, int) { return true; } bool FunctionB(int) { return true; } bool FunctionB(int, int, int) { return true; } void Member(void) { int static const iVariationA = 0; int static const iVariationB = 1; int static const nVariations = 2; for (int i = 0; i < nVariations; ++i) { bool (Tester::* const pfn)(int) = &Tester::FunctionA; } } }; void main(void) { Tester tester; }Does anyone know why this (which I would prefer instead of the workaround in the last example) won't compile?:Code:class Tester { bool FunctionA(int) { return true; } bool FunctionA(int, int, int) { return true; } bool FunctionB(int) { return true; } bool FunctionB(int, int, int) { return true; } void Member(void) { int static const iVariationA = 0; int static const iVariationB = 1; int static const nVariations = 2; bool (Tester::* static const pfnVariations[nVariations])(int) = { &Tester::FunctionA, &Tester::FunctionB }; for (int i = 0; i < nVariations; ++i) { bool (Tester::* const pfn)(int) = pfnVariations[i]; } } }; void main(void) { Tester tester; }
Code:class Tester { bool FunctionA(int ) { return true; } bool FunctionA(int, int, int) { return true; } bool FunctionB(int ) { return true; } bool FunctionB(int, int, int) { return true; } void Member(void) { int static const iVariationA = 0; int static const iVariationB = 1; int static const nVariations = 2; for (int i = 0; i < nVariations; ++i) { bool (Tester::* const pfn)(int) = ((i == iVariationA) ? (&Tester::FunctionA) : (&Tester::FunctionB)); } } }; void main(void) { Tester tester; }Thanks1>test.cpp(124) : error C2568: ':' : unable to resolve function overload
1> test.cpp(111): could be 'bool Tester::FunctionA(int,int,int)'
1> test.cpp(110): or 'bool Tester::FunctionA(int)'


Reply With Quote