Можно использовать указатели функции для индексации в vtable из приведенного примера объекта. Это называют указатель функции членства . Ваш синтаксис должен был бы измениться на использование ".*" и "&::" операторы:
class A;
class B;
typedef void (B::*EventFunction)(int nEvent)
и затем:
class A
{
private:
EventFunction handler;
public:
void SetEvent(EventFunction func) { handler = func; }
void EventOne(B* delegate) { ((*delegate).*handler)(1); } // note: ".*"
};
class B
{
private:
A a;
public:
B() { a.SetEvent(&B::EventFromA); } // note: "&::"
void EventFromA(int nEvent) { /* do stuff */ }
};
Даже если в этом нет необходимости, я все же предпочитаю писать приложения, для которых не требуется поддержка JS.
Я не думаю, что есть большая аудитория для не-JS-версий ваших веб-приложений, и даже если есть, кого это волнует? Это такой маленький процент людей, что вы не будете раздражать очень многих людей, заставляя их обновлять свои браузеры.
Однако я не пишу унизительные JS для своих пользователей, я пишу это для себя ...
На самом деле, я вообще не пишу ухудшающий JS - я пишу улучшающий JS.
Я чувствую, что могу писать приложения с большей направленностью и успехом, если сначала напишу их без JavaScript , а позже добавлю JavaScript для улучшения приложения .
]Сайт должен «работать». Он не должен петь или танцевать, но он не должен исключать никого без JS.
Большинство программ чтения с экрана все еще не используют JS, поэтому весь ваш контент должен быть им доступен.