Estoy tratando de obtener un puntero a una versión específica de una función de miembro sobrecargada. Aquí está el ejemplo:¿Cómo obtener la dirección de una función miembro sobrecargada?
class C
{
bool f(int) { ... }
bool f(double) { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double);
MemberFunctionType pointer = &C::f; // <- Visual C++ complains
}
};
El mensaje de error es "error C2440: 'inicialización': no se puede convertir de 'función sobrecargada' a 'MemberFunctionType'"
Esto funciona si f
no está sobrecargado, pero no en el ejemplo anterior. ¿Cualquier sugerencia?
EDITAR
cuidado, el código anterior no reflejaba mi problema del mundo real, que era que había olvidado un "const" - esto es lo que señala la respuesta aceptada. Aunque dejaré la pregunta tal como está, porque creo que el problema podría pasarle a otros.
hizo una prueba rápida y todo compila. el código se ve bien - si este es su código original, por supuesto: D ¿tiene usted también la const-ness exactamente como eso? –
¿Qué versión de MSVC estás usando? Funciona bien en 2008. – Eclipse
por supuesto. Voy a disfrutar mucho: p –