重写从 c 结构继承的函数
Override inherited function from c struct
好吧,所以我在 one.h 中有这个结构
typedef struct NWK_DataReq_t
{
uint16_t dstAddr;
uint8_t options;
uint8_t *data;
uint8_t size;
void (*confirm)(struct NWK_DataReq_t *req);
} NWK_DataReq_t;
稍后,在 two.h 中,有一些结构继承自 NWK_DataReq_t
:
#include "one.h"
struct commandReq_t : public NWK_DataReq_t {
...
}
struct dataReq_t : public NWK_DataReq_t {
...
}
我的目标是继承NWK_DataReq_t
的结构,同时为某些NWK_DataReq_t
变量设置默认值并向结构中添加变量。到目前为止,为变量分配默认值按预期工作。我遇到麻烦的一点是分配(*确认)功能。
struct commandReq_t : public NWK_DataReq_t {
uint16_t dstAddress = 2;
uint8_t options = 8;
void confirm = commandReqConf;
char newVar[20] = "Hello";
} commandReq;
...
void commandReqConf(NWK_DataReq_t *req);
我不知道如何设置默认函数来覆盖它。我的目标是将commandReqConf
设置为(*confirm)
函数并NWK_DataReq_t
传递它。
我希望这是有道理的,任何帮助都会很棒。
恕
我直言,正如您编写struct commandReq_t : public NWK_DataReq_t {
并将问题标记为 C++ 一样,您现在处于 C++ 世界中。
恕我直言,初始化对象的最简单方法是在构造函数中:
struct commandReq_t : public NWK_DataReq_t {
commandReq_t() { // default ctor
dstAddr = 2;
options = 8;
strcpy(newVar, "Hello");
confirm = &commandReqConf;
}
char newVar[20]; // initialized at ctor initialization time
} commandReq;
...
static void commandReqConf(NWK_DataReq_t *req);
由于函数commandReqConf
实际上是类CzarController
的成员,它应该是静态的 - 但如果它包含在与结构相同的类中,则不需要对其进行限定。
行
uint16_t dstAddress = 2;
uint8_t options = 8;
void confirm = commandReqConf;
char newVar[20] = "Hello";
在commandReq_t
的定义中是struct
的成员。他们是额外的成员。它们不会覆盖 NWK_DataReq_t
中的成员。鉴于此,该行
void confirm = commandReqConf;
在两个方面是错误的。
- 不能创建类型为
void
的成员变量。 - 不能分配向
confirm
返回void
的函数。
您需要做的是在构造函数中设置成员的值。
struct commandReq_t : public NWK_DataReq_t {
commandReq_t()
{
dstAddr = 2;
options = 8;
confirm = commandReqConf;
strcpy(newVar, "Hello");
}
char newVar[20];
} commandReq;
相关文章:
- C++虚函数继承
- 名称隐藏对静态函数继承的实例使用
- C++ std::vector 中的虚拟析构函数继承
- 具有相同名称的类的构造函数继承
- 多复制构造函数继承中的惊人行为
- CRTP 和复制/移动赋值/构造函数继承
- 复制构造函数继承动态分配的数组
- 谷神星求解器成本函数继承错误:模板可能不是虚拟的
- 无法从 c++ 中的构造函数继承
- 在构造函数继承中使用默认构造函数
- 如何定义从虚拟函数继承的静态函数
- 调用超类函数继承 c++
- 构造函数继承和直接成员初始化
- c++ 不明确的双非虚函数继承
- C++ - 使用私有参数的构造函数继承
- 通过可变参数模板进行C++11构造函数继承
- 使用模板进行函数继承
- C++11构造函数继承和不带参数的构造函数
- 函数继承问题
- C++11 - 构造函数继承