Я работаю над некоторым программным обеспечением для моделирования, в котором у меня есть объект, который движется к определенному местоположению на 2D-карте. Пока объект движется к местоположению, я пытаюсь отобразить некоторую информацию о его движении - например, сколько времени потребуется, чтобы добраться туда (TimeToGo или TTG), его ETA и оставшееся расстояние, на которое он должен ехать (DistanceToGo или DTG).C++ ошибка компиляции: невозможно преобразовать параметр 1 из 'DateTimeAndZone' в 'const int'
У меня есть следующие функции в моем DisplayTime.cpp
исходном файле:
void TimeReadout::update(const TPEquipmentTime::DateTimeAndZone& dateTimeAndZone_, const bool convertToSavedZone_)
{
...
}
Эта функция используется для обновления значения отображаются на графическом интерфейсе для ETA данного лица на месте. Я знаю, что функция работает правильно, поскольку она используется в нескольких местах в программе и делает то, что ожидается в этих местах.
Я сейчас пытаюсь повторно использовать эту функцию (копировать & паста) для обновления значения ТТГ
Я сейчас пытаюсь использовать функцию в другом исходном файле: Dialogue.cpp
следующим образом:
pFlightPlanTTGReadout->update(fpTTG);
Переменная fpTTG
имеет тип TPEquipmentTime::DateTimeAndZone
, а состояние состояний update()
принимает переменную типа const int
.
Когда я пытаюсь скомпилировать, я получаю ожидаемую ошибку:
'update' : cannot convert parameter 1 from 'Time_Value' to 'const int'
Однако, когда я смотрю на функции, которую я скопировал этот бит кода from- он сделал именно то, что я пытаюсь делать с (разные) параметра, одного и того же типа, т.е.
pFlightPlanETAReadout->update(fpETA);
где fpETA
является переменной типа TPEquipmentTime::DateTimeAndZone
Что я здесь отсутствует? Почему это работает в исходной функции, но не в функции, которую я пишу, хотя я (по крайней мере, пытаюсь) сделать то же самое, просто с другой переменной?
EDIT 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_)
[MCVE] (http://stackoverflow.com/help/mcve) будет полезен здесь. –
Вы отправили определение функции члена, которое принимает 2 параметра и вызов, который предоставляет 1 аргумент функции-члена. Так что, возможно, у вас есть какое-то другое «обновление» где-то объявлено, что принимает 1 параметр (это int). –
Я бы подумал, что это функция, которая используется, поскольку, если я нажму правой кнопкой мыши на функцию 'update()', которая имеет 'fpETA' в качестве параметра, который она задана, и нажмите« Перейти к определению », определение функции, которое оно принимает меня ... (кстати, я использую Visual Studio 2008 в качестве моей IDE). Я действительно задавался вопросом об этом (только используя один параметр, когда есть два в определении) сам ... Я вижу, что в том же .cpp-файле, что и определение этой функции, существует еще одно «пустое» определение: 'void update (void) {}; '- может быть, это тот, который используется и перевыполнен? – someone2088