Re[7]: Задолбало гццой
От: wander  
Дата: 12.12.09 14:18
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Здравствуйте, wander, Вы писали:


MSV>>>но за такие дела я смотрю на компилятор как на врага.

W>>Смотрите лучше так на того, кто это писал.
MSV>Не хочу так смотреть на себя.

MSV>>>Стандарты как минимум ограничивают фантазию.

W>>Стандарты обеспечивают порядок. И не вина GCC, что MSVC выбрал путь анархии.
MSV>Не чувствую, что сохранение порядка главная причина.


MSV>Программа запускается, но это сохранение порядка толкает на создание кривого кода.


Верите вы или нет, но качество кода в первую очередь зависит от того как именно написана программа. Если в программе постоянно используются такого рода хаки (как с конст_каст например в примере выше), то рано или поздно это случится (вылет). И не важно что у вас за компилятор. Поэтому я и говорю — когда возникают такого рода проблемы — нужно пересматривать дизайн.

MSV>Проблема все с теми же:

MSV> ошибка: вызов перегруженной ‘MString(HLString&)’ имеет неоднозначную трактовку
MSV> претенденты: MString::MString(const VString&)
MSV> MString::MString(const MString&)
MSV> MString::MString(unsigned int) <near match>
MSV> ...


MSV>HLString : public LString

MSV>в LString есть operator MString().

MSV>---

MSV>теперь вызывается с (MString&)lsret; но это как вы можете увидеть явный вылет, зато гцц не ругается.
MSV>operator MString() -> MString& -> неверный указатель на память.

Покажите хотя бы кусок цельного кода. Так не ясно что вы пытаетесь сотворить.

MSV>Вызов при котором даже в студия вылетает, что естественно:

MSV>Drawn((MString&)(HLString()+"Uncnown command '"+comm+"'\r\n\r\n"));

Покажите как operator+ реализован.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.