我正在调试一些部分用C ++编写,部分用Ada编写的仿真软件。在GUI上,有两个显示ETA和ETA的值。 TimeToGo是一个实体在其旅程的任何特定路段上进行模拟,以及整个旅程的剩余时间。 TimeToGo&为当前分支显示的ETA值是正确的(即实体从其当前位置到达其当前目标目的地需要多长时间)。但是,TimeToGo&整个旅程剩余时间的ETA值不正确 - 大约40-50秒落后。
我在代码中遇到了几个任务,我想知道它们是否是错误的方式:
if(some condition){
mFlightPlanData[0] = fpMiniToteData;
} else {
mFlightPlanData[1] = fpMiniToteData;
}
mFlightPlanData[]
是flightPlans
的数组,大小为2,因为每架飞机在任何时候最多可以有两个飞行计划 - 主要和次要。 fpMiniToteData
是用于在GUI上显示飞行计划数据的变量。
现在,在我看来,这些任务是错误的 - 这似乎是在说:
将飞行计划数组中的第一个元素设置为等于显示数据的值
否则
将飞行计划数组中的第二个元素设置为等于显示数据的值
然而,应该发生的是display data
应该设置为flight plan array
中第一个或第二个元素的值...
我尝试通过切换分配来做到这一点,即
if(some condition){
fpMiniToteData = mFlightPlanData[0];
} else {
fpMiniToteData = mFlightPlanData[1];
}
但我现在收到一个编译错误:
错误C2678:二进制'=':找不到哪个运算符带有'const ...'类型的左手操作数,或者没有可接受的转换)
这个错误是什么意思?我是否需要定义一个函数,将数组中保存的数据类型转换为fpMiniToteData
的数据类型?
非常感谢任何帮助。
编辑12/02/2015 @ 1645
fpMiniToteData
在函数定义中定义 - 上面代码所属的函数:
void FlightPlanInterface::setFlightPlanData(
const FlightPlanMinitoteTypes::FlightPlanPerformanceDataViewId_Type viewId,
const FlightPlanMinitoteTypes::FlightPlanMinitoteData_Variant& fpMiniToteData)
{
和mFlightPlanData
在头文件中定义如下:
private:
FlightPlanMinitoteTypes::FlightPlanMinitoteData_Variant mFlightPlanData[2];