template<typename T>
class giri::Observable< T >
Observable class. Inherited classes can notify all classes which inherit from Observer.
Example Usage:
class MyObserver : public Observer<MyObservable>
{
public:
MyObserver(const std::string & name) : m_Name(name){}
void update(MyObservable::SPtr obs)
{
std::cout << m_Name << " Update: "<< obs->GetObservable() << std::endl;
}
using SPtr = std::shared_ptr<MyObserver>;
using UPtr = std::unique_ptr<MyObserver>;
using WPtr = std::weak_ptr<MyObserver>;
private:
std::string m_Name;
};
int main()
{
MyObservable::SPtr osrvbl = std::make_shared<MyObservable>();
MyObserver::SPtr obs1 = std::make_shared<MyObserver>("Observer 1");
MyObserver::SPtr obs2 = std::make_shared<MyObserver>("Observer 2");
osrvbl->subscribe(obs1);
osrvbl->subscribe(obs2);
osrvbl->notify();
osrvbl->unsubscribe(obs1);
osrvbl->notify();
return EXIT_SUCCESS;
}