Да, вы можете передать произвольные аргументы spawn
для инициализации вашего актера, как в этом примере:
struct my_state {
int value;
};
behavior my_actor(stateful_actor<my_state>* self, my_state ms) {
self->state = std::move(ms);
// ...
}
void caf_main(actor_system& sys) {
auto hdl = sys.spawn(my_actor, my_state{42});
// ...
}
Однако в примере CURL хранится указатель self
в состоянии. Это сложно, потому что в этом случае вы не можете инициализировать состояние до появления актера. Лучшее, что вы можете сделать, это установить указатель вне конструктора.
Имейте в виду, что вам нужно предоставить конструктор по умолчанию для этого состояния независимо, потому что CAF создает состояние до того, как введет my_actor
. Конечно, вы можете переопределить его немедленно, но CAF все равно необходимо сначала создать состояние.