是否可以在C ++中创建自定义事件? 例如,假设我有变量X和变量Y.每当X改变时,我想执行一个将Y设置为3X的函数。 有没有办法创建这样的触发/事件? (触发器在某些数据库中很常见)
C ++中的自定义事件?
Custom events in C++?
===============>>#1 票数:10
这基本上是观察者模式的一个实例(正如其他人提到和链接的那样)。 但是,您可以使用模板魔术来使其更具语法可调性。 考虑类似......
template <typename T>
class Observable
{
T underlying;
public:
Observable<T>& operator=(const T &rhs) {
underlying = rhs;
fireObservers();
return *this;
}
operator T() { return underlying; }
void addObserver(ObsType obs) { ... }
void fireObservers() { /* Pass every event handler a const & to this instance /* }
};
然后你可以写...
Observable<int> x;
x.registerObserver(...);
x = 5;
int y = x;
用于编写观察者回调函数的方法完全取决于您; 我建议http://www.boost.org的功能或功能模块(你也可以使用简单的仿函数)。 我还提醒您注意这种类型的运算符重载。 虽然它可以使某些编码样式更清晰,但鲁莽使用类似的渲染
似乎LikeAnIntToMe = 10;
一个非常昂贵的操作,可能会爆炸,并导致调试噩梦未来几年。
===============>>#2 票数:3
Boost信号是另一个常用的库,你可能会遇到Observer Pattern(又名Publish-Subscribe)。 买家要小心,我听说它的表现太可怕了。
===============>>#5 票数:0
据我所知,你不能用默认变量来做,但是如果你写了一个带回调函数的类,你可以让其他类注册,他们希望得到任何更改的通知。
ask by Adam translate from so
未解决问题?本站智能推荐:
1回复
C ++集或其他集合的自定义擦除
我想做这样的事情:
该集的擦除操作将删除指针以避免内存泄漏。
对于C ++容器,这是否可行?或者正确的解决方案是对容器进行子类化并编写自己的擦除方法,或者使用某种智能指针方案?
2回复
在自定义分配器中处理没有默认构造函数
我有一个#define到我的new宏,使用我自己的分配器,比如MYNEW(Type, Allocator) ,我将使用malloc分配一些原始内存,然后使用placement new在原始内存上分配类型如
但是,当Type没有默认构造函数时,我遇到了问题。 我试过的一个场景是做一些像M
1回复
名称自定义LinkedList类型
这是最佳做法的问题。
我已经实现了LinkeList( https://github.com/ivanseidel/LinkedList ),并且工作正常。
问题是,我正在编写重复具有以下内容的代码: LinkedList<Beat> ,在我的情况下是Rithm ,但是R
4回复
设计可自定义的字符串过滤器
假设我在my_dir/my_subdir有大量的文件名,以某种方式格式化:
例如data11_7TeV是data_type , 00179691是运行号, NTUP_PHOTON是数据格式。
我想写一个接口来做这样的事情:
我想要懒惰的行为,例如在count或get_lis
1回复
解耦自定义用户数据
我有一个自定义着色器生成器:
我可以生成着色器,并像这样使用它:
它可以快速运行( MCVE ),但是存在不良耦合。 1. My_UniformInt缓存glsl特定变量( glsl_id )。 2. My_UniformInt也与glGetUniformLocation
1回复
处理许多自定义异常的最佳方法是什么?
由于某些要求,在我的cpp库中,我需要添加许多自定义例外(几乎50个以上),因此我正在考虑编写如下的自定义例外,
但是我担心的是,我需要编写这么多的自定义异常类(我有近50种以上的不同种类的异常,因此我可能最终会写出这么多异常类),是否有任何方法可以在一个或几个类中定义全部,并且抛出异常
2回复
如何在子类中使用自定义的虚函数初始化基本成员变量
StructComponent类的构造函数采用不同的逻辑来根据info的传入对象的类型初始化其成员变量。 在这里,我使用强制转换将传递参数转换为正确的子类对象。
Q1>代码正确是否忽略了潜在的设计问题?
Q2>假定ClassA的所有子类都具有功能CreateStruc
5回复
如何在C ++中模拟递归类型定义?
昨天我问了以下问题 ,为方便起见,转载于此;
“对于我的一个项目,我真正想做的就是这样做(将其简化为最低限度);
我必须承认,我认为不可能直接这样做,我认为MoveTree中的MoveTree矢量将被禁止。 但无论如何我都试过了,它的效果非常好。 我正在使用Microsoft
2回复
ISO C ++:如何设计事件?
我知道在C ++中设计事件的两种方法:
1:使用回调:
2:使用virtual方法:
设计活动还有其他方式或其他想法吗?
和
在ISO C ++中设计事件的最佳模式是什么?
2回复
Singleton类中的C ++链接器错误未定义引用
这个问题已经在这里有了答案:
C ++:对Singleton类的实例的未定义引用 5答案
我正在尝试将此java单例类移植到c ++:
我移植到此C ++代码:
但是我不能编译这个! 和gcc链接器错误发生。