【发布时间】:2017-04-10 10:36:59
【问题描述】:
我已经阅读了关于这个主题的类似主题(How to initialize a Pointer to a struct in C? 和
Initializing a pointer to a structure)
但尝试new 或malloc 失败。我有一堆typedefs 喜欢
typedef void (*STP_CALLBACK_ON_TOPOLOGY_CHANGED) (BRIDGE* bridge);
typedef void* (*STP_CALLBACK_ALLOC_AND_ZERO_MEMORY) (unsigned int size);
typedef void (*STP_CALLBACK_FREE_MEMORY) (void* p);
typedef void (*STP_CALLBACK_ENABLE_LEARNING) (BRIDGE* bridge, unsigned int portIndex, unsigned int treeIndex, bool enable);
构成一个结构
struct STP_CALLBACKS
{
STP_CALLBACK_ON_TOPOLOGY_CHANGED onTopologyChanged;
STP_CALLBACK_ALLOC_AND_ZERO_MEMORY allocAndZeroMemory;
STP_CALLBACK_FREE_MEMORY freeMemory;
...
};
当我想用
初始化一个指向这个结构的指针时const STP_CALLBACKS *callbacks = new STP_CALLBACKS;
它实际上什么都没有。我是一个新手,显然错过了一些重要的事情。什么是正确的方法?
附:上面的代码来自mstp-lib。我在VS2015上。
【问题讨论】:
-
它们是函数指针......
-
你想用什么初始化它们?
-
@doctorlove 在下一个函数中使用 - STP_CreateBridge
-
你没有告诉它初始化内容。由于您将其声明为 const,除非您定义构造函数,否则您将很难设置成员。您不需要动态分配。您只需要决定指向哪些函数,或者将它们设置为 nullptr。
-
我没有问为什么——我问的是什么。你需要告诉它函数指针应该指向什么。如果您显示您希望它指向的功能,我们可以告诉您如何操作。