вторник, 18 мая 2010 г.

Гадкий Си++ :-)

Только что человек снова наступил на неоднозначность грамматики...

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 - когда на это указали, отзывов от природе языка была масса :-)))

Комментариев нет: