Wskaźniki na metody w C++

Uwaga! Informacje na tej stronie mają ponad 6 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Sun
15
Oct 2006

Istnieje coś takiego, jak wskaźnik na metodę (inaczej delegat - delegate, zdarzenie - event, sygnał - signal czy jak kto tam nazwie). Chodzi o wskaźnik na dowolną metodę konkretnego obiektu dowolnej klasy, która ma zgodny nagłówek. Mechanizm ten przydatny jest szczególnie podczas pisania systemu GUI. Posiada go każdy nowoczesny język programowania, jak Delphi czy C#. Każdy z wyjątkiem C++. Jak sobie z tym poradzić?

Różni ludzie różnie kombinują. Pojawia się tutaj wiele zagadnień, np. pytanie czy można zapewnić wygodną składnię bez użycia makr albo elastyczność bez użycia rzutowania typów. Jedni w ogóle omiają problem robiąc to prymitywnie, np. łańcuszkiem if-else albo wielkim switchem. Inni wymyślają własne implementacje, a jeszcze inni korzystają z gotowych. Tych gotowych jest wiele i są bardzo różnorodne. Niektóre z nich to mechanizm wbudowany w bibliotekę Qt czy wxWidgets, a z niezależnych modułów - sigslot.

Ja jakiś czas temu wypatrzyłem bibliotekę FastDelegate dołączoną do artykułu na The Code Project i właśnie ją polecam. Jest szybka, elastyczna, przenośna, wygodna i ogólnie elegancka. Napisałem do niej krótką dokumentację, żeby można było zacząć jej używać bez czytania całego artykułu.

Comments | #c++ Share

Comments

[Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2024