将函数指针指定给函数指针

时间:2014-10-15 13:04:08

标签: c++ pointers struct function-pointers

尝试将结构指针分配给结构中的函数指针时,我遇到了问题。

我有一个结构command,它包含一个调用字符串值,一个确认其激活的消息,以及一个在激活时调用的函数。

但是,我在结构体的构造函数中分配函数指针时遇到了麻烦(可能会在以后将结构化为一个类,不确定)。

struct Command
{
    Command(string _code, string _message, void *_func(void))
        : code(_code), message(_message) { /* ERROR: */ func = _func; }

    string code;        // The string that invokes a console response
    string message;     // The response that is printed to acknowledge its activation
    void *func(void);   // The function that is run when the string is called
};

在上面的代码中,标有/* ERROR: */我收到错误"expression must be a modifiable value"。我怎样才能解决这个问题?我只想将函数的引用传递给struct。

2 个答案:

答案 0 :(得分:4)

@Joachim Pileborg所述,您不会声明指向函数的指针。

要声明一个函数指针,您需要在星号和标识符部分周围添加括号,例如

// 'func' is a pointer to function taking parameter void and returning void.
void (*func)(void);

从C ++ 11开始,你也可以声明一个像这样的函数指针,它不那么简洁:

std::add_pointer_t<void()> func;

std::add_pointer_t<void(int, int)> func; // Pointer to func taking 2 ints.

答案 1 :(得分:2)

你需要围绕* func和* _func

的括号