bool IRouteMonitoringImpl::IsRouteCorrect(NSRT_HANDLE route, std::wstring& errorMessage) const
{
if (route == NULL)
{
return false;
}
try
{
NRouteCalc::CRouteCache(route);
}
catch (NRouteCalc::CExceptionRC ex)
{
const int MaxErrorSize = 256;
wchar_t buffer[MaxErrorSize];
switch (ex.GetError())
//... Много кода
Маленькая справка - CRouteCache формирует внутри себя некоторый набор предварительно подготовленной просчитанной информации, которая затем используется в процессе сверки движения судна с эталонной траекторией.Если в процессе расчета обнаруживаются какие-то несообразности конструктор выбрасывает исключение с указанием источника проблемы.
Разумность такого подхода пока оставим за рамками обсуждения.
То, что исключение ловилось не по ссылке тоже к вопросу пока не относится...
Человек таким образом хотел "нахаляву" осуществить предварительную проверку маршрута с целью отсечь негодные на самом раннем этапе :-)
Код замечательно скомпилировался и даже добрался до интграционного тестирования... вот тут-то и сработал раздел 6.8 стандарта :-))
Все, что может быть трактовано как объявление, таковым и является - по факту тут был создан экземпляр объекта root с типом NRouteCalc::CRouteCache - когда на это указали, отзывов от природе языка была масса :-)))
Комментариев нет:
Отправить комментарий