GraceFt v2.3
开源图形引擎 EGE(Easy Graphics Engine) 的高层封装库
 
载入中...
搜索中...
未找到
GFt::Signal< Args > 模板类 参考

信号-槽机制支持 更多...

#include <Signal.hpp>

Public 成员函数

 Signal ()=default
 
SlotId< Args... > connect (const Slot &slot)
 连接槽函数
 
template<typename Derived , typename Base >
requires std::derived_from<Derived, Base>
SlotId< Args... > connect (Derived *object, void(Base::*method)(Args...))
 将成员函数作为槽函数连接
 
void disconnect (SlotId< Args... > id)
 断开槽函数
 
void emit (Args... args)
 发送信号
 
void operator() (Args... args)
 发送信号
 

详细描述

template<typename... Args>
class GFt::Signal< Args >

信号-槽机制支持

支持任意数量的槽函数,支持任意数量的参数,支持任意类型的参数

此类是线程安全的,这意味着你可以在另一线程执行槽函数时添加或移除槽函数,但不保证槽函数运行的线程安全性

模板参数
Args信号参数类型

构造及析构函数说明

◆ Signal()

template<typename... Args>
GFt::Signal< Args >::Signal ( )
default

成员函数说明

◆ connect() [1/2]

template<typename... Args>
SlotId< Args... > GFt::Signal< Args >::connect ( const Slot & slot)
inline

连接槽函数

参数
slot槽函数
返回
槽函数ID

连接的槽函数会在信号发出时被调用

槽函数ID是按顺序生成的,从0开始

注解
生成的槽函数ID时只保证唯一性,不保证其连续性
调用槽函数时不保证调用顺序与连接顺序一致

◆ connect() [2/2]

template<typename... Args>
template<typename Derived , typename Base >
requires std::derived_from<Derived, Base>
SlotId< Args... > GFt::Signal< Args >::connect ( Derived * object,
void(Base::* method )(Args...) )
inline

将成员函数作为槽函数连接

模板参数
Derived对象类类型
Base成员函数所在类类型
注解
要求 Derived 必须是 Base 的派生类(子类)或 Base 本身
参数
object成员函数所在类的实例
method成员函数指针
返回
槽函数ID

◆ disconnect()

template<typename... Args>
void GFt::Signal< Args >::disconnect ( SlotId< Args... > id)
inline

断开槽函数

参数
id槽函数ID

◆ emit()

template<typename... Args>
void GFt::Signal< Args >::emit ( Args... args)
inline

发送信号

参数
args信号参数
注解
调用槽函数时不保证调用顺序与连接顺序一致
此函数是线程安全的,但不保证槽函数的线程安全性

◆ operator()()

template<typename... Args>
void GFt::Signal< Args >::operator() ( Args... args)
inline

发送信号

参数
args信号参数

效果同 emit()

参见
emit()