[core] Store pointer instead of referect to the Object in ActorRef
GCC complains about implicitly deleted assigment constructor
when trying to do this:
void setResourceTransform(optional<ActorRef<ResourceTransform>> transform) {
resourceTransform = transform;
}
optional<ActorRef<ResourceTransform>> resourceTransform;
This commit is contained in:
@@ -24,19 +24,19 @@ template <class Object>
|
||||
class ActorRef {
|
||||
public:
|
||||
ActorRef(Object& object_, std::weak_ptr<Mailbox> weakMailbox_)
|
||||
: object(object_),
|
||||
: object(&object_),
|
||||
weakMailbox(std::move(weakMailbox_)) {
|
||||
}
|
||||
|
||||
template <typename Fn, class... Args>
|
||||
void invoke(Fn fn, Args&&... args) {
|
||||
if (auto mailbox = weakMailbox.lock()) {
|
||||
mailbox->push(actor::makeMessage(object, fn, std::forward<Args>(args)...));
|
||||
mailbox->push(actor::makeMessage(*object, fn, std::forward<Args>(args)...));
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Object& object;
|
||||
Object* object;
|
||||
std::weak_ptr<Mailbox> weakMailbox;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user