Иногда необходимо из функции одного класса вызвать функцию обратного вызова другого, при этом не задавая жёстко тип класса, а лишь определяя интерфейс функции(поведение).
class ClassCallback
{
public:
//Этот метод будет callback-ом
int callback(int i)
{
return i+1;
}
};
class Class1
{
public:
//Шаблон функции - члена
template <typename T>
// Первый параметр - ссылка на экземпляр класса,
// второй - указатель на функцию - callback
int foo(T &p, int (T::*fn)(int))
{
return (p.
Читать | Комментарии [2]
11 июня 2009
В C++ нельзя сделать шаблонные typedef'ы. Но, как известно, если нельзя, но очень хочется, то можно. Для этого используем такой trick: завернём нужный typedef в шаблонную структуру.
При этом сохраняется вся функциональность обычных шаблонов, включая полную и частичную специализацию.
Читать | Комментировать
9 июня 2009