Recientemente descubrí que hay un concepto de referencia a la función en C++ :). Por lo tanto, existen diferentes tipos de función de puntero a función y de función de puntero a miembro. Surge la pregunta. ¿Hay un concepto de "referencia a la función de miembro"?¿Referencia a la función miembro?
He intentado compilar el siguiente código, pero GCC 3.4.6 da un error.
#include <iostream>
using namespace std;
class A {
public:
virtual void Af() const {
cout << "A::Af()" << endl;
}
};
int main() {
typedef void (A::& MemFnc)() const;
MemFnc mf = &A::Af;
A a;
(a.*mf)();
return 0;
}
gcc 3.4.6? Debería considerar actualizar el compilador. Además, al preguntar sobre el código que desencadena los errores del compilador, generalmente es una buena idea proporcionar el mensaje de error real (comenzando desde el primer error en el resultado) e identificar la línea donde se queja el compilador. –
No tengo permiso para actualizar GCC :(. No proporcioné el código de error porque creo que en este caso no importa qué tipo de error dé, la parte esencial es que no entiende esta sintaxis. – MKo
Si hubiera una referencia al miembro, ¿qué sintaxis debería usarse para usarla? Un puntero-a-miembro se usa con '. *', Por lo que el uso común sugiere que la referencia al miembro debería ser simplemente descartar la estrella, lo que resulta para ser simple '.' ?! que es exactamente lo mismo que usar un miembro ordinario. – Sjoerd