初始化指向 typedefs 结构的指针
Initializing a pointer to structure of typedefs
我已经阅读了有关此主题的类似线程(如何在 C 中初始化指向结构的指针?初始化指向结构的指针(但尝试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上。
因为你实际上并没有初始化。Typedef 只是声明一个类型。new
上面所做的只是为 4 个函数指针分配内存。要初始化此内存,您需要构造函数:
struct STP_CALLBACKS {
STP_CALLBACKS(STP_CALLBACK_ON_TOPOLOGY_CHANGED _fp1, ...
...
然后,具有要调用的实际函数,例如func1,func2,...您可以初始化结构:
void func1(BRIDGE* bridge) {
...
}
STP_CALLBACKS callbacks(func1, ...
然后回调你的函数:
BRIDGE bridge;
callbacks.onTopologyChanged(&bridge);
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- 指针或结构的矢量
- MSVC将仅移动结构参数解释为指针
- 如何访问指针结构的成员变量?
- 如何将变量从变量传递到指针结构对象
- 如何在函数中检索指针结构
- C :变量的点地址至指针结构成员的地址
- C++指针结构不会被删除
- 初始化指针结构 - 内存中的外观
- C++指针结构和多线程
- c++中指针结构的运算符重载
- 为什么我不能转发声明指针结构?
- C# 如何定义新的指针结构
- 如何处理大型指针结构
- 我怎么能写一个函数的定义在模板类中声明返回指针结构对象
- 我如何编程指针结构或类变量在c++
- 具有指针结构的类所需的析构函数
- 为什么在非指针结构上进行类型转换会出现语法错误
- 语法:做binary_search (STL)排序向量的指针结构
- /a.检测到Glibc.out: munmap_chunk():无效指针- c++结构体的动态数组