У меня есть интересный случай использования для моего маленького любимого проекта, где я хотел бы иметьМожно ли определить анонимную функцию-член в C++
static map<std::string, pointer-to-member-function>
в классе. Это легко, если немного громоздкий синтаксис, и он работает красиво.
То, что я хотел бы сделать, также состоит в том, чтобы функция-указатель-член была простым лямбда-выражением в моем статическом инициализаторе. Это сделало бы sooo легким для того чтобы упаковать вещи как это в славном макросе.
Я хочу, чтобы функция-указатель к члену имела доступ к частным членам класса, поэтому я не могу использовать обычную лямбду с «этим» в качестве параметра. Однако я не могу найти способ определить анонимную функцию-член - C++ lambdas кажутся свободными глобальными функциями?
Вы хотите 'std :: map>'? –
Jarod42
Нет, это невозможно. Однако вы можете передать экземпляр своего класса в качестве параметра. –
Если вы захватили указатель 'this' в лямбда, он будет вести себя как функция-член. –