Я пытаюсь работать с компонентной моделью.По сути, я хочу иметь объект, к которому я могу прикрепить другие объекты, а затем через корневой объект получить доступ ко всем функциям в дочерних объектах.Например: если у меня есть объект с именем Calculator, а затем у меня есть еще 2 с именами Add и Subtract, я хочу иметь возможность просто прикрепить объекты Add и Subtract к объекту Calculator и затем сделать что-то вроде Calculator.add (), который на самом деле вызывает Calculator.Add.add ();
Я слышал, что обратные вызовы, использующие функторы, являются подходящим способом.Это правда?Если да, есть ли способ получить список всех текущих доступных функторов на объекте?
Я искал работу с настройкой, подобной этой:
#include <callback.h> //include the callback library header
#include <iostream.h>
class Button{
public:
Button(const Functor0 &uponClickDoThis)
:notify(uponClickDoThis)
{}
void click()
{
notify(); //a call to operator()
}
private:
Functor0 notify; //note - held by value
};
//Some application stuff we'd like to connect to Button:
class CDPlayer{
public:
void play(){cout<<"Playing"<<endl;}
void stop(){cout<<"Stopped"<<endl;}
};
void wow()
{cout<<"Wow!"<<endl;}
void main()
{
CDPlayer cd;
//makeFunctor from object and ptr-to-member-function
Button playButton(makeFunctor(cd,&CDPlayer::play));
Button stopButton(makeFunctor(cd,&CDPlayer::stop));
//makeFunctor from pointer-to-function
Button wowButton(makeFunctor(&wow));
playButton.click(); //calls cd.play()
stopButton.click(); //calls cd.stop()
wowButton.click(); //calls wow()
}