Mam niewielki problem dotyczący wskaźników do przeciążenia funkcji składowych w C++. Poniższy kod kompiluje grzywny:Operator warunkowy nie może rozpoznać przeciążonych wskaźników funkcji elementu
class Foo {
public:
float X() const;
void X(const float x);
float Y() const;
void Y(const float y);
};
void (Foo::*func)(const float) = &Foo::X;
Ale to nie kompiluje (kompilator narzeka, że przeciążenia są niejednoznaczne):
void (Foo::*func)(const float) = (someCondition ? &Foo::X : &Foo::Y);
Przypuszczalnie jest to coś zrobić z kompilator sortowaniu powrót wartość operatora warunkowego niezależnie od typu wskaźnika funkcji? Mogę to obejść, ale chciałbym się dowiedzieć, jak to mówią, że wszystko to ma działać, ponieważ wydaje się mało intuicyjne i jeśli jest jakaś metoda obejścia go bez cofania się do 5 linii .
Używam MSVC++, jeśli to robi jakąkolwiek różnicę.
Dzięki!
Należy wskazać, co oznacza "nie działa". Błąd kompilatora? Nieoczekiwane zachowanie środowiska wykonawczego? –
Zrobiłem to, dzięki za sugestię. – Peter