tutorial name metatags keywords etiquetas español ejemplos create creador c++ overloading pointer-to-member

c++ - name - meta tags seo



¿Cómo obtener la dirección de una función miembro sobrecargada? (1)

Bueno, ya responderé lo que he puesto como comentario para que pueda ser aceptado. El problema es con constness:

class C { bool f(int) { ... } bool f(double) const { ... } bool example() { // I want to get the "double" version. typedef bool (C::*MemberFunctionType)(double) const; // const required! MemberFunctionType pointer = &C::f; } };

Aclaración:

La pregunta original no contenía esa const . Hice una suposición descabellada en los comentarios sobre si posiblemente tiene f ser una función miembro constante en el código real (porque en una iteración anterior, resultó que otra cosa faltaba / era diferente del código del mundo real: p). En realidad, tenía una función de miembro constante y me dijo que debería publicar esto como una respuesta.

Estoy intentando obtener un puntero a una versión específica de una función miembro sobrecargada . Aquí está el ejemplo:

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: ''inicializando'': 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 una "const", esto es lo que señala la respuesta aceptada. Sin embargo, dejaré la pregunta tal como está, porque creo que el problema podría pasarle a los demás.