Recentemente ho scoperto che esiste un concetto di riferimento in funzione in C++ :). Così come ci sono tipi di funzione pointer-to-function e pointer-to-member-type. La domanda sorge spontanea. Esiste un concetto di "riferimento a membro-funzione"?Riferimento alla funzione membro?
Ho provato a compilare il seguente codice, ma GCC 3.4.6 restituisce un errore.
#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? Dovresti considerare di aggiornare il compilatore. Inoltre, quando si chiede del codice che attiva gli errori del compilatore, di solito è una buona idea fornire il messaggio di errore effettivo (partendo dal primo errore nell'output) e identificare la linea in cui si lamenta il compilatore. –
Non ho il permesso di aggiornare GCC :(. Non ho fornito il codice di errore perché penso che in questo caso non importa quale tipo di errore dia, la parte essenziale è che non capisce questa sintassi – MKo
Se ci fosse un riferimento al membro, quale sintassi dovrebbe essere usata per usarlo? Un puntatore-membro è usato con '. *', Quindi l'uso comune suggerisce che il riferimento al membro dovrebbe essere semplicemente cadere la stella, che risulta per essere chiari '.'?! Che è esattamente lo stesso di usare un membro ordinario – Sjoerd