Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'operation' : Unzulässiger Vorgang auf Zeiger auf Memberfunktionsausdruck
Bemerkungen
Ein Zeiger auf den Memberfunktionsausdruck muss die Memberfunktion aufrufen.
Beispiele
Im folgenden Beispiel wird C2298 generiert.
// C2298.cpp
#include <stdio.h>
struct X {
void mf() {
puts("in X::mf");
}
void mf2() {
puts("in X::mf2");
}
};
X x;
// pointer to member functions with no params and void return in X
typedef void (X::*pmf_t)();
// a pointer to member function X::mf
void (X::*pmf)() = &X::mf;
int main() {
int (*pf)();
pf = x.*pmf; // C2298
+(x.*pmf); // C2298
pmf_t pf2 = &X::mf2;
(x.*pf2)(); // uses X::mf2
(x.*pmf)(); // uses X::mf
}
Im folgenden Beispiel wird C2298 generiert.
// C2298_b.cpp
// compile with: /c
void F() {}
class Measure {
public:
void SetTrackingFunction(void (Measure::*fnc)()) {
TrackingFunction = this->*fnc; // C2298
TrackingFunction = fnc; // OK
GlobalTracker = F; // OK
}
private:
void (Measure::*TrackingFunction)(void);
void (*GlobalTracker)(void);
};