首页 > 解决方案 > 函数不接受 1 个参数 - 观察者/模式

问题描述

我是 C++ 编程的新手,现在面临这个“简单”问题一段时间。我正在使用以下类实现观察者模式的一个简单步骤:观察者和观察者。

#ifndef OBSERVER_H
#define OBSERVER_H

#include "observable.h"

class Observer{

public:
  virtual ~Observer() = default;
  virtual void update(Observable* obs ) = 0;

};

#endif // OBSERVER_H

Observabel 类看起来像这样:

#ifndef OBSERVABLE_H
#define OBSERVABLE_H

#include <vector>
#include "observer.h"


class Observable
{

public:
    Observable();


    virtual ~Observable() = default;
    void attach(Observer &o);
    void detach(Observer &o);
    void notify();

private:  
     std::vector<Observer*> observerlist;
};

#endif // OBSERVABLE_H

c++- 文件

#include "observable.h"
#include <algorithm>


void Observable::attach(Observer &o) { observerlist.push_back(&o); }

void Observable::detach(Observer &o)
{
    observerlist.erase(std::remove(observerlist.begin(), observerlist.end(), &o));
}

void Observable::notify()
{
    for (Observer* obs : observerlist) {

        obs->update(this);                      // Here the IDE Shows the Error
    }
}

错误:

C:\U...\observable.cpp:16: error: C2660: "Observer::update": function does not take 1 Argument

我真的希望你们中的一个可以提供帮助。

问候

标签: c++

解决方案


推荐阅读