Задать вопрос
@Zaher220
Software developer

Не могу вызвать указатель на функию член с++

Здравствуйте.
Не могу вызвать функцию член класса по указателю.
У меня еть класс для работы с протоколом SCPI. Ниже приведен его упрощённый вид.
В нем объявлен тип scpi_command_callback_t указатель на функцию член класса.
Указатель на функцию член хранится в структуре scpi_command_t. Но при попытке вызова функции по указателю я получаю ошибку ошибка: 'callback' was not declared in this scope.
#ifndef SCPIPARSER_H
#define SCPIPARSER_H

class SCPIParser : public QObject
{
    Q_OBJECT
public:
    explicit SCPIParser(QObject *parent = 0);
public:
    typedef scpi_result_t(SCPIParser::*scpi_command_callback_t)();

    struct scpi_command_t {
        const char * pattern;
        scpi_command_callback_t callback;
    };
    scpi_result_t SCPI_CoreCls();
};
#endif


Внутри класса следующий код
const scpi_command_t * cmd = context.paramlist.cmd;
(cmd->*callback)() ; //ошибка: 'callback' was not declared in this scope
  • Вопрос задан
  • 2745 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
А где объект класса, на котором вызывается метод??? Должно выглядеть как-то так:

SCPIParser * p = new ...;
...
(p->*(cmd->callback))()


UPDATE: скобки забыл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы