У меня есть этот код:функторов + указатели членов создать объект сигнала
// signal supporter parent
class signalable {};
template <class typeT = signalable>
typedef void (typeT::*trig)(std::string);
template <class typeT = signalable>
class trigger
{
private:
typeT* instance;
typeT::trig fun;
public:
trigger(typeT* inst, typeT::trig function)
: instance(inst), fun(function)
{}
void operator()(std::string param)
{
(instance->*fun)(param);
}
};
И я получаю много ошибок компиляции, что я пари профи знают. Я немного запутался в этом контексте.
Что я хочу сделать, это ясно: передать указатель на объект и указатель на одну из его функций-членов, чтобы сделать функтор и передать его в моей программе.
Поблагодарили бы за помощь и «исправления».
Спасибо!
Бен C ответил на ваш вопрос, но вы можете посмотреть в [шаблон Observer] (http://en.wikipedia.org/ wiki/Observer_pattern) для приятного подхода к тому, что я считаю вашей ** оригинальной ** проблемой. – smocking
@smocking Я ценю вашу точку зрения, случай, с которым я имел дело раньше, но в этом случае модель наблюдателя моя цель, поскольку в моих кодовых событиях должны распространяться в «цепном» стиле, а не какое-то событие, распространяемое на несколько . вызываемые методы Во всяком случае, спасибо, что помогли мне заметить контраст. – Haix64
Я не уверен, что понимаю, почему вам нужна такая сигнализация, но не могли бы вы немного расширить шаблон, если бы ваши «цепные» классы сигнализации наследовали как интерфейс Observer, так и Observable? – smocking