观察者带有共同指针
Observer with shared pointers
我正在尝试编写一个简单的观察者类,该类别注册并保留对象的共享指针。以下是代码:
template <typename Ptr>
class S
{
private:
std::map<string,std::vector<shared_ptr<Ptr>> observers_;
public:
S()=default;
void registerObserver(const string &event, shared_ptr<Ptr> observer)
{
observers_[event].push_back(observer);
}
void notify(const string&event)
{
for (const auto& obs : observers_.at(event))
obs->notify();
}
};
但是,此错误失败了汇编:
Subject.h:51:50: error: template argument 2 is invalid
51 | std::map<string,std::vector<shared_ptr<Ptr>> observers_;
一些人可以帮助纠正我的声明吗?
我正在尝试编写一个简单的观察者类,该类别注册并保留对象的共享指针。
然后您要使用专门为此设计的std::weak_ptr
:
std :: feek_ptr模型临时所有权:仅当对象存在时才能访问该对象,并且可以随时将其删除。
相关文章:
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 反射 + 函数指针与观察者模式
- 观察者模式不起作用
- 观察者带有共同指针
- 观察者模式:为什么主题应该是抽象的?
- 使用 RxCpp 构建观察者/可观察模式
- C 设计:多个TCP客户端,Boost ASIO和观察者
- 使用POCO的多深度目录观察者
- 观察者模式专业化
- C 样本观察者模板类误差
- 如何在不必绑定到特定类的情况下实现观察者模式
- C++,函数指针与观察者模式
- 列表<观察者*>*和列表<观察者*>C++的区别
- Intotify观察者在LS或观看命令后停止工作
- 观察者常量正确性
- C++11观察者模式(信号、插槽、事件、更改广播器/侦听器,或任何您想称之为的东西)
- 修复 C++ 中的观察者设计模式
- 实施观察者模式C
- C++自己的观察者模式
- c++观察者模式:原始指针vs shared_ptr