【发布时间】:2022-01-26 15:37:34
【问题描述】:
当我将容器添加到键入的消息时,我收到“不完整类型”错误消息。这是一个简单的例子。注意 \"display_behavior\" 消息中的最后一个参数是一个字符串吗?这个演员编译并运行得很好。
using DisplayActor = caf::typed_actor<
caf::result<void>(display_behavior, time_point<system_clock>, string)>;
class DisplayState {
private:
shared_ptr<Displayable> displayable_;
public:
explicit DisplayState(std::shared_ptr<Displayable> displayable) :
displayable_(displayable) {}
DisplayActor::behavior_type make_behavior() {
return {
[this](display_behavior, time_point<system_clock> quackTime, string behavior) {
displayable_->displayBehavior(quackTime, behavior);
}
};
}
};
using DisplayImpl = DisplayActor::stateful_impl<DisplayState>;
现在我用一个向量替换字符串参数:
using DisplayActor = caf::typed_actor<
caf::result<void>(display_behavior, time_point<system_clock>, vector<string>)>;
class DisplayState {
private:
shared_ptr<Displayable> displayable_;
public:
explicit DisplayState(std::shared_ptr<Displayable> displayable) :
displayable_(displayable) {}
DisplayActor::behavior_type make_behavior() {
return {
[this](display_behavior, time_point<system_clock> quackTime, vector<string> behavior) {
//displayable_->displayBehavior(quackTime, behavior);
}
};
}
};
using DisplayImpl = DisplayActor::stateful_impl<DisplayState>;
难道我做错了什么?
-
嗯,我遇到了序列化问题吗?如果我将 vector<string> 包装在一个类中,然后将该类声明为 unsafe message,那么程序将编译并通过我的测试。我仍然有点困惑,因为this page 显示了如何编写检查重载,而
point_3d字段有一个向量成员变量。