复制不带指针的结构
Copy structure without pointers
我试图在物理组件(Arduinos)和飞行模拟器之间创建一个接口,以便控制和显示自建部件的模拟器事件。我在学校开始学习C++,但一直都不太热衷。
然而,我用来与飞行模拟器通信的库是用C++编写的(它被称为SimConnect),我的付费软件飞机的SDK也是如此。因此,我认为重新使用它可能比为另一种编程语言创建包装器之类的东西更容易。
每次我从模拟器接收到新数据时,我都会将其传递到函数ProcessNGXData
:
PMDG_NGX_Data* previousData;
bool alreadyProcessed = false;
void ProcessNGXData(PMDG_NGX_Data *data)
{
if (!alreadyProcessed || data->LTS_TaxiSw != previousData->LTS_TaxiSw) {
if (data->LTS_TaxiSw)
printf("Taxi Lights: [ON]n");
else
printf("Taxi Lights: [OFF]n");
}
if (!alreadyProcessed) {
alreadyProcessed = true;
}
previousData = data;
}
在其他编程语言中,这可能会很好地工作,因此我尝试这样实现它。然而,C++指针对我来说稍微复杂一些
条件CCD_ 2从不计算为CCD_ 3。根据我的理解,这是因为data
和previousData
都是指向完全相同结构的指针,因此永远不会不同。
我对这些指针知之甚少,又不太了解,我该怎么做呢?有没有一种方法可以复制结构,这样它们就可以有所不同?
提前谢谢。
像这样声明previousData:
PMDG_NGX_Data previousData;
(没有星号)。现在,当你想"保存"结构时,可以这样做:
previousData = *data;
(右手边有一个星号)。请注意,这假设PMDG_NGX_Data是可复制的并且大小固定。如果它是一个接口或抽象类,那么这是不可能的。也许API为您提供了一个可以调用的"克隆"或"复制"方法。
如果PMDG_NGX_Data
不是太大,无法复制每个ProcessNGXData
,您可以尝试以下操作:
PMDG_NGX_Data previousData;
bool alreadyProcessed = false;
void ProcessNGXData(PMDG_NGX_Data *data)
{
if (!alreadyProcessed || data->LTS_TaxiSw != previousData.LTS_TaxiSw) {
if (data->LTS_TaxiSw)
printf("Taxi Lights: [ON]n");
else
printf("Taxi Lights: [OFF]n");
}
if (!alreadyProcessed) {
alreadyProcessed = true;
}
previousData = *data;
}
如果它太大,您可以创建一个结构,该结构将只包含需要比较的字段,并将由PMDG_NGX_Data
初始化,并在每个ProcessNGXData
初始化该结构。
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- C++:映射结构中的结构指针
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 类的静态结构指针声明在C++
- 在两个.cpp文件之间定义全局类/结构指针
- 返回对常量结构(指针类型)成员的引用:明显的左值到右值转换
- 是否可以将无符号字符数组reinterpret_cast到仅包含C++中无符号字符成员的结构指针
- 如何在地图中使用结构指针
- 结构指针在"新"调用上给出已分配的地址?
- 铸造结构指针指向C 的工会指针
- c++ 结构指针在初始化为 NULL 时无法读取内存
- 函数中的结构指针的地址为0x1
- C 用结构指针初始化结构
- C 结构指针铸成数组Interop C#
- 方法中不允许访问结构指针
- 如何打印出结构指针
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 尝试将结构指针传递给类时出错
- 初始化结构指针的值
- 使用 pybind11 将自定义结构(指针向量)从 C++ 传递到 python 的方法是什么?