尝试将结构指针分配给结构中的函数指针时,我遇到了问题。
我有一个结构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。
答案 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
的括号