Hello to all, i have coded an observer pattern
class IObserver;
class ISubject
{
public:
public:
ISubject();
virtual ~ISubject();
virtual void RegisterObserver(IObserver*) = 0;
// Observer only interest in certain aspect
virtual void RegisterObserver(IObserver*, bool) = 0;
virtual void UnRegisterObserver(const IObserver*) = 0;
// An Observer with 1 subject
virtual void NotifyObserver() = 0;
// An Observer with many subject
virtual void NotifyObserver(const ISubject&) = 0;
};
class IObserver
{
public:
IObserver();
virtual ~IObserver();
virtual void Update(ISubject*) = 0;
// Observer only interest in certain aspect
//virtual void Update();
};
class Subject : public ISubject
{
public:
Subject();
Subject(size_t);
~Subject();
void RegisterObserver(IObserver*);
void RegisterObserver(IObserver*, bool);
void UnRegisterObserver(const IObserver*);
void NotifyObserver();
void NotifyObserver(const ISubject&);
void setValue(const size_t&);
size_t getValue() const;
private:
size_t value;
std::vector<IObserver*> cont;
};
Observer::Observer()
{
}
// =============================================
Observer::~Observer()
{
}
// =============================================
void Observer::Update(ISubject* observSubject)
{
// Error Here
cout << observSubject->getValue();
}
error C2027: use of undefined type 'ISubject'
error C2227: left of '->getValue' must point to class/struct/union/generic type
Please help.
Thanks.