gpt4 book ai didi

c++ - 将函数指针赋值给函数指针

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:06 25 4
gpt4 key购买 nike

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

我有一个结构 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"。我怎样才能解决这个问题?我只想将对函数的引用传递给结构。

最佳答案

@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.

关于c++ - 将函数指针赋值给函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com