小编use*_*962的帖子

问题实施观察者模式:"成员参考基础类型________不是结构或联合"

我一直在实现一个准确的观察者模式,并且陷入了一个有点神秘的错误:"成员引用基类型'Observer*'不是结构或联合".我认为这与我使用模板有关,我仍然相当不舒服.这是有问题的代码(为了简化事情,删除了大多数缺点/析构函数):

主题界面:

class Subject { 
public:
    virtual void notify();
private:
    list< Observer * > m_observers; 
};
Run Code Online (Sandbox Code Playgroud)

主题实施:

void Subject::notify() {
    list< Observer * >::iterator i;

    for ( i = m_observers.begin(); i != m_observers.end(); i++ ) {
        *i->update( this );                        // ERROR !!! ERROR
}
Run Code Online (Sandbox Code Playgroud)

观察者抽象界面:

class Observer {
public:
    virtual ~Observer();
    virtual void update( Subject * changedSubject ) = 0;

protected:
    Observer();
};
Run Code Online (Sandbox Code Playgroud)

具体观察者界面:

class ConcreteObserver: public Observer {

public:
    ConcreteObserver( ConcreteSubject * );
    virtual ~ConcreteObserver();

    virtual void update( Subject …
Run Code Online (Sandbox Code Playgroud)

c++ templates iterator list observer-pattern

8
推荐指数
1
解决办法
7631
查看次数

标签 统计

c++ ×1

iterator ×1

list ×1

observer-pattern ×1

templates ×1