我試圖創建一個物理組件(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++指針對我來說稍微複雜一點。
條件data->LTS_TaxiSw != previousData->LTS_TaxiSw
從未評估爲true
。根據我的理解,這是因爲data
和previousData
都是指向完全相同結構的指針,因此永遠不會有所不同。
憑藉我的知識和對這些指針的理解不多,我該怎麼做?有沒有辦法複製結構,所以它們可以有所不同?
在此先感謝。
如何保存'LTS_TaxiSw'的前一個'bool'值? – 2015-04-01 22:23:26
這也是他們在SDK示例中所做的(他們只跟蹤兩個值)。但是,稍後會跟蹤許多結構值,我寧願不爲每一個結構值創建另一個變量。 – Padarom 2015-04-01 22:25:33
我很困惑,所以你傳入'ProcessNGXData'的數據也是'previousData'? – DigitalNinja 2015-04-01 22:27:28