Closed KeqingMoe closed 1 year ago
额是这么回事,你的这行
msg.add(*i);
首先你进行了一次解指针,但是解的是父类指针,抹掉了子类的类型,然后被add()加进去的时候类型变成了基类类型,本身的信息全都丢了。我们这个add()函数提供给你是帮助你从singleMessage的子类对象直接转发构造internal::Message
的,不是用来实现多态的。你这里的i
已经是internal::Message
了,所以你应该改成
msg.emplace_back(i);
以及题外话,你的
for(auto i:e.message){
会把整个message里的所有internal::Message
对象(智能指针)复制一次,这种时候你应该用引用
for(auto&& i:e.message){
如果不用引用的话,应该
msg.emplace_back(std::move(i));
非常感谢🫡
Code of Conduct
问题描述
我直接把
GroupMessageEvent
事件中的一个PlainText
对象加入另一个MessageChain
后再发送。然后当我发消息给机器人时,在e.group.sendMessage(msg)
处报错,代码如下:目前我只测试了两种情况:此错误在发送
GroupMessageEvent
事件中的PlainText
对象会出现,如果发送的是At
不会出现,且提供自己创建的对象则行为一切正常。日志
版本
v2.13.1
组件
LibLoader
编译器
MinGW
系统
Windows
架构
x86-64/amd64