Ich versuche, eine Art Ereignissystem zu erstellen. Es ist mir egal, ob es suboptimal ist, ich mache es zum Spaß. Ich möchte keine alternativen Lösungen, ich möchte verstehen, warum dies nicht funktioniert und wie ich das beheben kann. event_triggerer zu speichern die Funktionen, die es von Event_Receiver aufrufen und in der Lage sein kann, sie auf dem gespeicherten Objekt zu rufen
Dies ist der relevante Code:
typedef void(event_receiver::* ev_rec_func)(const event_receiver::Msg&);
class event_receiver {
public:
struct Msg {
int irrelevant_test_data;
};
virtual void event_callback0(const Msg& m) {};
};
class event_triggerer {
private:
std::vector suscribers_vec;
public:
void trigger_event(const event_receiver::Msg& m) {
for (std::pair& e : suscribers_vec) {
//this line show the error expression must have pointer to member type
e.first->*(e.second(m));
}
}
< /code>
Visual Studio zeigt dies an, wenn ich über ev_rec_func < /code>: < /p>
typedef void ev_rec_func (const &) < /p>
< />
"Ein Zeiger auf eine gebundene Funktion darf nur die Funktion aufrufen" < /p>
< /blockquote>
Wie kann ich den Fehler lösen? < /p>
Ich kann nicht die Funktion der gespeicherten Mitglieder auf gespeichertem Objekt aufrufen ⇐ C++
-
- Similar Topics
- Replies
- Views
- Last post