Я пытаюсь передать агрегат, который хранит функции как назначенные инициализаторы, но безуспешно.
Вот что я попробовал:
typedef struct Handlers
{
std::function<void()> func1 = nullptr;
std::function<void()> func2 = nullptr;
std::function<void()> func3 = nullptr;
std::function<void()> func4 = nullptr;
} Handlers;
class Person
{
public:
Person(const char *name,
uint16_t age,
Handlers &&handlers);
void doSomething();
};
Вот как я пытаюсь передать функции
int main(int argc, char *argv[])
{
Person p1(
"Guy",
28,
{
.func1 = []() {},
.func2 = []() {},
.func3 = []() {},
.func4 = []() {}
});
}
Одно из сообщений об ошибке:
no known conversion for argument 3 from ‘<brace-enclosed initializer list>’ to ‘Handlers&&’
35 | Person(const char *name, uint16_t age, Handlers &&handlers);