Я хочу сделать что-то вроде этого:C++ указатель на метод класса
struct CLI_Command{
CLI_Command(char* s, void (*h)(void)){
command_string = s;
handler = h;
}
char* command_string;
void (*handler)(void);
};
class CLI {
public:
CLI();
private:
CLI_Command cli_table[NO_CLI_COMMANDS] = {
CLI_Command("Command1", handler1),
CLI_Command("Command2", handler2)
};
void handler1(){};
void handler2(){};
};
Я знаю, что мне нужно что-то похожее на CLI :: * обработчик, но я не могу получить правильный синтаксис. Я постоянно работает в ошибки, как это:
"error: no matching function for call to 'CLI_Command::CLI_Command(const char [4], <unresolved overloaded function type>)"
Проблема заключается в том, что вы пытаетесь взять адрес нестатической функции члена, который неразрешенный. Я недавно ответил на этот вопрос (http://stackoverflow.com/a/25953204/1392132). Может быть, это поможет вам. Обратите внимание, что современный C++ предоставляет мощные инструменты для записи вашей программы намного чище и безопаснее. – 5gon12eder
@ 5gon12eder: Совершенно законно принимать адрес нестатической функции-члена, но результатом является указатель-на-член, а не указатель на функцию. –
@ 5gon12eder ОК, можете ли вы подробно остановиться на этих инструментах? Или указать мне в каком-то направлении? :). Я делаю интерфейс командной строки через UART на встроенном устройстве. – Jolle