c ++编译错误:无法从' DateTimeAndZone'转换参数1到' const int'

时间:2015-01-07 17:12:58

标签: c++ compiler-errors

我正在研究一些模拟软件,其中我有一个实体正朝着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::DateTimeAndZoneupdate()函数状态的变量类型为const int

当我尝试编译时,我得到了预期的错误:

  

'update':无法将参数1从'Time_Value'转换为'const int'

然而,当我看到我从这个代码中复制了这个代码的函数时,它完全正在尝试用相同类型的(不同的)参数,即。

pFlightPlanETAReadout->update(fpETA);

其中fpETATPEquipmentTime::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_)

1 个答案:

答案 0 :(得分:1)

除非我遗漏了某些内容......这是基本的C ++。 正如您所提到的,函数pFlightPlanTTGReadout->update采用int参数,并且您传递的内容不是int,并且无法隐式转换为int

在原始pFlightPlanETAReadout->update(fpETA)中,函数参数也是int? 如果是,

  • 一种可能性是原始代码中的DateTimeAndZone具有从DateTimeAndZoneint的转换运算符。
  • 另一种可能性是原始代码有一个重载的update函数,它以DateTimeAndZone为参数。