Здравствуйте, __kain, Вы писали:
__>Всем спасибо! Конструктор копирования спас человечество! Добавил три строчки:
__>__>CSomeException(CSomeException& other)
__>{
__> CSomeException(other._code, other._msg);
__>}
__>
И оно стало работать!
Ух ты! И с какой версии VC позволяет вызывать конструктор из другого конструктора?
Дело в том, что в стандартном С++ так делать нельзя.
__>Я теперь понял, что происходит при передаче по ссылке: вызывается конструктор копирования
Это заблуждение. Дело не в передаче по ссылке, а в том, как именно создается объект — исключения. А создается он как копия объекта, указанного в
throw (
здесьАвтор: Bell
Дата: 02.12.03
). Так что ссылка в catch совершенно не при чем.
__>Тогда понятно, почему глюк был. Я раньше думал, что если пишу "&", то "волшебным" образом передается в точности тот объект, который я ему передал! Как если бы я его использовал в месте вызова.
Это так и есть. В этом плане ссылка аналогична указателю.
__>wstring можно использовать, и boost, но мне было важно разобраться, в чем причина моей ошибки.