Здравствуйте, <Аноним>, Вы писали:
А>Ситуация примерно такая:
А можно вопрос? Это на каком языке?
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Как изменить сообщение об ошибке компилятора?
От:
Аноним
Дата:
05.02.04 19:22
Оценка:
Ситуация примерно такая:
существует несколько overloaded функций,создающих объект полиморфного класса. Необходимо изменить сообщение о стандартной ошибке, если нет ни одной подходящйе функции для исходного обьекта этого типа..
если, нарпимер, определить еще тип Test3, насдедник от unknown, то он по вполне понятным причинам не будет подходить под синтакиси существующих функций-конструкторов.
MSVC выдет сообщние: none of 5 overloaded functions....
Как можно именно вот это сообщение и заменить?
P.S. пример не проверялся на работатоспособность..
Здравствуйте, Аноним, Вы писали:
А>Ситуация примерно такая:
А>существует несколько overloaded функций,создающих объект полиморфного класса. Необходимо изменить сообщение о стандартной ошибке, если нет ни одной подходящйе функции для исходного обьекта этого типа..
А>например:
А>
А>если, нарпимер, определить еще тип Test3, насдедник от unknown, то он по вполне понятным причинам не будет подходить под синтакиси существующих функций-конструкторов. А>MSVC выдет сообщние: none of 5 overloaded functions....
А>Как можно именно вот это сообщение и заменить?
Можно сделать чтобы все остальные типы попадали в нерабочий шаблон, но тогда например short также будет попадать в шаблон:
А может все-таки не ошибки компилятора, а твоей ошибки, которую выводит компилятор?
А>существует несколько overloaded функций,создающих объект полиморфного класса.
В твоем случае это overriden, а не overloaded функции.
Re[2]: Как изменить сообщение компилятора об ошибке?
От:
Аноним
Дата:
06.02.04 10:23
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, <Аноним>, Вы писали:
А>>Ситуация примерно такая:
WH>А можно вопрос? Это на каком языке?
День добрый. Искренне извиняюсь за корявость написаного кода и грамматические ошибки в тексте.. Писалось в послденюю минуту в компьютерном клубе...
Вообще, подразумевалось, что это c++, и код был придуман на ходу, чтобы на примере показать ситуацию, где полезно было бы переопределить стандартное сообщение об ошибке, выдаваемой компилятором.
В похожей ситуации, MSVC 6 пишет:
: error C2665: 'tc' : none of the 5 overloads can convert parameter 1 from type ....
Вариант тов. folk достаточно неплох, в этот шаблон попадают все не заявленые заранее типы, но сразу появляется встречный вопрос, — как в теле этой функции сгенерировать именно сообщение компилятора, например
#error Don't know how to handle this type
ЗЫ. В теме слово "комплилятора" относится к существительному "сообщение", а не "ошибке"
Re[3]: Как изменить сообщение компилятора об ошибке?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, WolfHound, Вы писали:
WH>>Здравствуйте, <Аноним>, Вы писали:
А>>>Ситуация примерно такая:
WH>>А можно вопрос? Это на каком языке?
А>День добрый. Искренне извиняюсь за корявость написаного кода и грамматические ошибки в тексте.. Писалось в послденюю минуту в компьютерном клубе...
А>Вообще, подразумевалось, что это c++, и код был придуман на ходу, чтобы на примере показать ситуацию, где полезно было бы переопределить стандартное сообщение об ошибке, выдаваемой компилятором. А>В похожей ситуации, MSVC 6 пишет: А>
: error C2665: 'tc' : none of the 5 overloads can convert parameter 1 from type ....
А>Вариант тов. folk достаточно неплох, в этот шаблон попадают все не заявленые заранее типы, но сразу появляется встречный вопрос, — как в теле этой функции сгенерировать именно сообщение компилятора, например А>
Думаю приктически любой компилятор выведет в сообщении об ошибке среди прочего 'Dont_know_how_to_handle_this_type'.
А>ЗЫ. В теме слово "комплилятора" относится к существительному "сообщение", а не "ошибке"
Здравствуйте, Alxndr, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
A>А может все-таки не ошибки компилятора, а твоей ошибки, которую выводит компилятор?
А>>существует несколько overloaded функций,создающих объект полиморфного класса.
A>В твоем случае это overriden, а не overloaded функции.
Не знаю что ты имеешь ввиду, но cont — перегруженная (overloaded) функция.
Здравствуйте, folk, Вы писали:
А>>>существует несколько overloaded функций,создающих объект полиморфного класса.
A>>В твоем случае это overriden, а не overloaded функции.
F>Не знаю что ты имеешь ввиду, но cont — перегруженная (overloaded) функция.
Принимается, перепутал: не на cont смотрел.
Re[5]: Как изменить сообщение компилятора об ошибке?
F>>Думаю приктически любой компилятор выведет в сообщении об ошибке среди прочего 'Dont_know_how_to_handle_this_type'.
А>Хм. мой компилятор пытается проверить синтаксис этого кода в любом случае, не задумываясь о том, будет он использован или нет..
Проверка синтаксиса — одно (причем синтаксических ошибок тут нет), истанцирование шаблона — другое. Компилятор не должен инстанцировать шаблон, пока его явно или неявно не попросят об этом.
А>и эта реализация cont становится для компилятора более приемлимой, чем
А>
А>container * cont(unknown * data)
А>{
А>}
А>
А>и для обработки классов Test1 и Test2 придется и для них делать экземпляры cont, не требующие приведения к предку.
Ну разумеется, просто в предыдущих постах ты для каждого потомка unknown перегружал cont.
Да плюнь вообще на эту идею, ничего хорошего в ней нет, не надо усложнять простое. Родное сообщение компилятора о том что ни одна из перегрузок не подходит верно описывает ситуацию.