Próbuję wskaźników funkcji członkowskich przechowywać przez szablony tak: (To jest uproszczoną wersją mojego prawdziwego kodu)Przeciążone wskaźnik funkcji członka do szablonu
template<class Arg1>
void connect(void (T::*f)(Arg1))
{
//Do some stuff
}
template<class Arg1>
void connect(void (T::*f)())
{
//Do some stuff
}
class GApp
{
public:
void foo() {}
void foo(double d) {}
};
Następnie chcę zrobić jak następuje za co przeciążone metody GAPP:
connect(&GApp::foo);
Wywołanie to dla foo()
jest ok, ale jak mogę nazwać to dla foo(double d)
? Dlaczego poniższe czynności nie działają?
connect((&GApp::foo)(double));
To da mi
błąd składni: „podwójne” powinien być poprzedzony „)”
nie rozumiem składni, które muszą być wykorzystane tutaj. To może być głupi pomysł, ale czy ktoś może mi w tym pomóc?
Lepiej używać Funktorów zamiast wskaźników funkcyjnych imho. – Drakosha
Cały kod jest częścią implementacji mechanizmu Signal and Slot. Tak więc, litener (który ma slot) nie chce wiedzieć o systemie. Tak więc, nie mogę powiedzieć słuchaczowi, żeby to zrobił, zrób to ...... – Morpheus