【发布时间】:2014-10-15 13:04:07
【问题描述】:
我在尝试将函数指针分配给结构中的函数指针时遇到问题。
我有一个结构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"。我怎样才能解决这个问题?我只想将一个函数的引用传递给结构。
【问题讨论】:
-
void *func(void)不是函数指针,它是一个名为func的函数的声明,它不接受任何参数并返回void*。void (*func)(void)是一个名为func的变量,它是一个指向不带参数且不返回任何内容的函数的指针。 -
另外,在 C++ 中你应该小心指向函数的指针,因为它们只能用于非成员函数、静态成员函数或一种类型的 lambda 表达式。如果您想要更通用的函数类型,请阅读
std::function。 -
@Joachim Pileborg 呃,你是对的。帅哥,谢谢解答!现在工作:)
标签: c++ pointers struct function-pointers