информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetВсе любят медПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[c++] CString 27.05.01 05:28  
Автор: kolbaser Статус: Незарегистрированный пользователь
<"чистая" ссылка>
такой вопрос,
из-за чего может возникать сообщение об ошибке
error C2666: '[]' : 2 overloads have similar conversions
в следующем куске кода
{
MessageBuffer[24+i] = m_sMessage[i];
}
где
BYTE *MessageBuffer = new BYTE[n];
CString m_sMessage;
?????
ошибка возникает с оператором [] для CString
PS. имеется такой же кусок кода в другом проекте, где он замечательно компилируется.....


[c++] CString 27.05.01 13:37  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> такой вопрос,
> из-за чего может возникать сообщение об ошибке
> error C2666: '[]' : 2 overloads have similar conversions
> в следующем куске кода
> {
> MessageBuffer[24+i] = m_sMessage[i];
> }
> где
> BYTE *MessageBuffer = new BYTE[n];
> CString m_sMessage;
> ?????
> ошибка возникает с оператором [] для CString
> PS. имеется такой же кусок кода в другом проекте, где он
> замечательно компилируется.....
>

да ХЗ..., может оператор был перегружен. раз он показал - '[]' : 2 overloads - а дальше не показывает какие 2 overloads именно? или еще какое нить сообщение, к примеру - See declaration of class CString?
А какого типа у тебя параметр i ?
На всякий случай мона сделать так, проблема должна исчезнуть.
MessageBuffer[24+i] = (BYTE)m_sMessage[int(i)];
[c++] CString 29.05.01 23:48  
Автор: kolbaser Статус: Незарегистрированный пользователь
<"чистая" ссылка>

> А какого типа у тебя параметр i ?
вот это да. Просто офигеть.
i у меня был объявлен как UINT и при этом он выдавал вышеозначенную ошибку...
при замене на int всё замечательно компилируется...
ваши комментарии.
[c++] CString 30.05.01 01:11  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
>
> > А какого типа у тебя параметр i ?
> вот это да. Просто офигеть.
> i у меня был объявлен как UINT и при этом он выдавал
> вышеозначенную ошибку...
> при замене на int всё замечательно компилируется...
> ваши комментарии.

Ничего офигительного.
Вся фишка в том, что обычно через оператор [] обращаются индексом типа size_t - unsigned int
а в CString есть оператор :
TCHAR operator [] (int nIndex) const
так вот, когда ты к нему (к стригу) обращаешься, компилятор не знал какой оператор задействовать, потому что он можен сконвертировать твой UINT в int, тогда идет оператор класса.
а так же (я так пологаю) CString => const char* /operator LPCTSTR/ => operator [] (size_t index) - стандартный оператор указателя/массива.

Вот он и матюгался. Ошибка выявляется, когда идет 2-ой "перегужаемый" смысл. Поэтому никогда не ленись делать casting спокойней спать будешь и без анальгина :)))))
а почему он компилился в другом проекте без ошибок - не могу сказать. Скорее всего какие то опции были заменены, или разные компиляторы - версия или компания. это уже ты знаешь.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach