Ich schrieb eine Event
Klasse als Wrapper um Callback-Funktionen, implementiert als std::function
s. Dies ist, wie es aussieht:C++ - std :: Funktion als Parameter für einen Funktor
class Event
{
public:
Event() : default_handler([]() {});
Event(const std::function<void()> handler) : default_handler(handler);
void SetHandler(std::function<void()> handler)
{
custom_handler = handler;
}
void operator()(void)
{
default_handler();
custom_handler();
}
private:
const std::function<void()> default_handler;
std::function<void()> custom_handler;
};
Dann in einer anderen Klasse, ich habe eine Instanz einer Event:
class Control
{
public:
Control();
//Should call constructor Event()
Event myEvent1;
//Should call constructor Event(std::function<void()>)
Event myEvent2([]() {/*do stuff... */})
};
Dies wird jedoch kompiliert nicht auf VC++, Erzeugen von Fehlern C3646 (Unbekannter Override-Spezifizierer) und Fehler C4430 (fehlender Typspezifizierer - int vorausgesetzt) für beide Handler, mit mehr Syntaxfehlern für myEvent2. Was habe ich falsch gemacht?
In Zukunft die tatsächlichen Fehler veröffentlichen. Trotz der Tatsache, dass Sie sie vielleicht nicht verstehen, haben sie tatsächlich nützliche Informationen! – Yakk