cyanray / mirai-cpp

本项目为 mirai-api-http 的 C++ 封装,方便使用 C++ 开发基于 mirai-api-http 插件。
GNU Affero General Public License v3.0
148 stars 38 forks source link

问题:Cyan::EventBase基类能否向例如Cyan::GroupMessage强制转换 #53

Closed zmdyy0318 closed 3 years ago

zmdyy0318 commented 3 years ago

这是一个疑问,网上实在搜不到解决方案了,来这里问问,不行的话直接关闭哈。 场景: 往函数里传递Cyan::EventBase &event, Cyan::MiraiEvent type两个参数,根据type类型强制把基类转换成派生类正常使用,减少代码冗余。在自行测试中,static_cast、dynamic_cast 均提示No matching conversion for static_cast from 'Cyan::EventBase' to 'Cyan::GroupMessage'

zmdyy0318 commented 3 years ago

已有解决方案

cyanray commented 3 years ago

可以将EventBase的引用或指针转化为GroupMessage的引用或指针 要注意避免对象切割(Object Slicing)