取消引用 void 指针以将值分配给结构
Dereferencing void pointer to assign value to struct
我有几个包含各种参数组合的结构。我编写了一个函数,该函数接受对结构体的 void 指针引用(有几种不同的类型(,并将来自 data 参数的信息写入其中。这是下面的功能:
void SubModelBase::writeDataStruct(byte msgID, void *ptr, QByteArray data)
{
*(byte*)ptr[0] = msgID;
*(byte*)ptr[1] = data.length();
for (int i = 2; i < data.length(); i++)
{
*(byte*)ptr[i] = data.at(i);
}
}
void *ptr 是对我想将数据写入的结构的引用,但我在引用指针以便我可以写入它时遇到问题。我确定我只是在这里的语法中遗漏了一些愚蠢的东西,但目前我没有看到它......
编辑:
好的,我重写了函数,在分配值之前首先将 void 指针转换为字节指针:
void SubModelBase::writeDataStruct(byte msgID, void *ptr, QByteArray data)
{
byte* structData = (byte*)ptr;
structData[0] = msgID;
structData[1] = data.length();
for (int i = 0; i < data.length(); i++)
{
structData[i + 2] = data.at(i);
}
}
尚未测试,但现在它至少可以编译。我这样做是因为有超过 30-40 种不同的结构需要在其中填充数据,我需要单个函数,可以在不知道每个结构的详细信息的情况下轻松处理操作。但是,如果有更好的方法来解决这个问题,我绝对愿意接受想法。
编辑2:修复了循环中的逻辑错误
您似乎正在寻找一个模板,以便编译器在需要时创建正确的方法。
相关文章:
- 如何在模板类函数中分配结构值?
- 在cuda中分配结构数组后,变量会丢失
- 在 GPU 上分配结构的 OpenCL 会导致垃圾
- 使用C++动态分配结构的多维数组
- 在读取大型 txt 文件时动态分配结构内的向量
- 在C++中更有效地分配结构体的内存
- 分段错误,在动态分配的结构内动态分配结构
- 如何无限制地重新分配结构数组
- 我在动态分配结构时遇到问题
- 为结构的整个向量分配结构的元素
- 在C++中分配结构
- 在c++中编写交换函数以重新分配结构数组中的成员值
- 如何分配结构,然后增加其大小
- 使用 malloc 在C++中动态分配结构
- 分配结构列表的向量
- 如何在方法中返回数组的动态分配结构
- 动态分配结构数组很麻烦
- 堆分配结构的初始值设定项列表
- 已分配结构包含向量的内存泄漏
- 从循环中分配结构成员