Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Commit bfd252d

Browse files
committed
MessageChain.Add新增可变参数重载
1 parent 923b905 commit bfd252d

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

UnitTest/main.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ TEST(MessageChain_Test, Add_and_Get) {
2222
ASSERT_TRUE(m.Text() == "Hello");
2323
}
2424

25+
TEST(MessageChain_Test, Add_and_Get2) {
26+
using namespace Cyan;
27+
MessageChain mc;
28+
mc.Add<PlainMessage>("Hello");
29+
auto m = mc.GetFirst<PlainMessage>();
30+
ASSERT_TRUE(m.Text() == "Hello");
31+
}
32+
2533
TEST(MessageChain_Test, GetAll) {
2634
using namespace Cyan;
2735
MessageChain mc;
@@ -105,7 +113,7 @@ TEST(MessageChain_Test, AtMessage) {
105113
MessageChain mc;
106114
mc.Add(AtMessage(1234_qq));
107115
auto at = mc.GetFirst<AtMessage>();
108-
ASSERT_TRUE(at.Target().QQ == 1234);
116+
ASSERT_TRUE(at.Target().ToInt64() == 1234);
109117
}
110118

111119
TEST(MessageChain_Test, AtAllMessage) {

include/defs/message_chain.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,15 @@ namespace Cyan
8181
return *this;
8282
}
8383

84+
template<class T,class... Args>
85+
MessageChain& Add(Args&&... args)
86+
{
87+
static_assert(std::is_base_of<IMessage, T>::value, "只能接受 IMessage 的派生类");
88+
std::shared_ptr<IMessage> m_ptr(new T(args...));
89+
messages_.push_back(m_ptr);
90+
return *this;
91+
}
92+
8493
template<class T>
8594
void Remove(const T& m)
8695
{

0 commit comments

Comments
 (0)