如何解决C ++如何存储函数指针?
这是我的代码:
class Opcodes {
public:
Opcodes() = default;
virtual ~Opcodes() = default;
virtual void Initialize() = 0;
virtual void ValidateAndSetServerOpcode(ServerOpcode serverOpcode,void(WorldSession::*HandlerFunction)(std::vector<std::byte>& data)) = 0;
class PacketHandler{
public:
PacketHandler() = default;
ServerOpcode serverOpcode;
std::vector<std::byte> data;
void(WorldSession::*HandlerFunction)(std::vector<std::byte>& data);
void Run();
private:
WorldSession* _session;
};
protected:
PacketHandler* opcodeHandler[NUM_MSG_TYPES];
};
让我们专注于此功能:
void ValidateAndSetServerOpcode(ServerOpcode serverOpcode,void(WorldSession::*HandlerFunction)(std::vector<std::byte>& data))
如何将void(WorldSession::*HandlerFunction)(std::vector<std::byte>& data)
的第二个参数ValidateAndSetServerOpcode
存储在PacketHandler
内的指针成员中?
我尝试了void(WorldSession::*HandlerFunction)(std::vector<std::byte>& data);
,但这不是正确的方法。
这是我尝试在ValidateAndSetServerOpcode
内分配它的方法:
opcodeHandler[serverOpcode]->HandlerFunction = HandlerFunction;
但是它不起作用。尝试这样分配时会崩溃。
有可能吗?
解决方法
函数指针的定义正确,但是也许您没有初始化所使用的指针。
无论如何,您的方法是C
方法,甚至是C++
之前的C++11 standard
方法。
从C++11 standard
开始,最好使用标准库提供的std::function,这样也可以分配一个lambda函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。