Tengo un problema menor relacionado con los punteros a las funciones de miembro sobrecargadas en C++. El siguiente código compila bien:El operador condicional no puede resolver punteros de función de miembro sobrecargados
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;
Pero esto no compila (el compilador se queja de que las sobrecargas son ambiguas):
void (Foo::*func)(const float) = (someCondition ? &Foo::X : &Foo::Y);
de suponer que esto es algo que ver con el compilador de la clasificación de la devolución valor del operador condicional por separado del tipo de puntero a función? Puedo evitarlo, pero estoy interesado en saber cómo funciona la especificación, se supone que todo esto funciona, ya que parece poco intuitivo y si hay alguna forma de evitarlo sin caer en 5 líneas de if-then-else .
Estoy usando MSVC++, si eso hace la diferencia.
Gracias!
Debe indicar qué significa "no funciona". ¿Error del compilador? ¿Comportamiento de tiempo de ejecución inesperado? –
Han hecho eso, gracias por la sugerencia. – Peter