我正在研究一些模拟软件,其中我有一个实体正朝着2D地图上的特定位置移动。当实体移动到位置时,我试图显示有关其移动的一些信息 - 例如到达那里需要多长时间(TimeToGo-或TTG),其ETA以及它必须行进的剩余距离( DistanceToGo或DTG)。
我的DisplayTime.cpp
源文件中有以下功能:
void TimeReadout::update(const TPEquipmentTime::DateTimeAndZone& dateTimeAndZone_, const bool convertToSavedZone_)
{
...
}
此功能用于更新GUI上显示的位置实体的ETA值。我知道该函数可以正常工作,因为它在程序的几个地方使用,并且在那些地方做了预期的事情。
我现在正在尝试重用该功能(复制和粘贴)来更新TTG值
我现在尝试以下列方式在另一个源文件中使用该函数:Dialogue.cpp
:
pFlightPlanTTGReadout->update(fpTTG);
变量fpTTG
的类型为TPEquipmentTime::DateTimeAndZone
,update()
函数状态的变量类型为const int
。
当我尝试编译时,我得到了预期的错误:
'update':无法将参数1从'Time_Value'转换为'const int'
然而,当我看到我从这个代码中复制了这个代码的函数时,它完全正在尝试用相同类型的(不同的)参数,即。
pFlightPlanETAReadout->update(fpETA);
其中fpETA
是TPEquipmentTime::DateTimeAndZone
我在这里缺少什么?为什么它在原始函数中起作用,而不是在我写的函数中,即使我(尝试至少)做同样的事情,只是使用不同的变量?
编辑07/01/2015 @ 18:45
我刚刚注意到我正在尝试在我的函数中使用的update()
函数调用与原始函数中使用的函数调用之间存在差异:
原文:
pFlightPlanETAReadout->update(fpETA);
如果我将光标悬停在update
上,则小对话框中会显示两个功能:
virutal void TimeReadout::update(void)
virtual void TimeReadout::update(const TPEquipmentTime::DateTimeAndZone & dateTimeAndZone_, const bool convertToSavedZone_ = true)
而在我的职能中:
pFlightPlanTTGReadout->update(fpTTG);
如果我将光标悬停在“更新”上,则对话框只显示一个功能:
void ElapsedTimeReadout::update(const int total_seconds_)
答案 0 :(得分:1)
除非我遗漏了某些内容......这是基本的C ++。
正如您所提到的,函数pFlightPlanTTGReadout->update
采用int
参数,并且您传递的内容不是int
,并且无法隐式转换为int
。
在原始pFlightPlanETAReadout->update(fpETA)
中,函数参数也是int
?
如果是,
DateTimeAndZone
具有从DateTimeAndZone
到int
的转换运算符。 update
函数,它以DateTimeAndZone
为参数。