Пришелец 0 11 августа, 2005 Опубликовано 11 августа, 2005 · Жалоба Для класса перегрузил оператор + всё ок затем добавил перегрузку привидения типа к char и он стал писать такую ошибку: Error[Pe350]: more than one operator "+" matches these operands: built-in operator "arithmetic + arithmetic" function "i2c_p::operator+(unsigned short)" operand types are: i2c_p __near + int Может кто в курсе в чём проблема? :blink: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 11 августа, 2005 Опубликовано 11 августа, 2005 · Жалоба Видимо дело в конфликте явного и неявного приведений типа к char. Попробуйте не делать явных приведений, а перегрузите оперетор для других нужных типов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Пришелец 0 11 августа, 2005 Опубликовано 11 августа, 2005 · Жалоба Нет явного приведения не делается :blink: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Пришелец 0 11 августа, 2005 Опубликовано 11 августа, 2005 · Жалоба Кстати если убрать перегрузку плюса то он перестаёт ругаться и выдаёт сообщение о неправильном приведении типа Сождаётся впечатление что запись operator char(); он принимает за перегрузку плюса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 69 12 августа, 2005 Опубликовано 12 августа, 2005 · Жалоба Кстати если убрать перегрузку плюса то он перестаёт ругаться и выдаёт сообщение о неправильном приведении типа Сождаётся впечатление что запись operator char(); он принимает за перегрузку плюса <{POST_SNAPBACK}> Вы бы код привели лучше, мы бы сами посмотрели, чем гадать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Пришелец 0 12 августа, 2005 Опубликовано 12 августа, 2005 · Жалоба Вот объявление класса: class i2c_p { public: unsigned short adr; void operator = (unsigned short a); i2c_p operator + (unsigned short a); i2c operator [] (unsigned short i); operator char(); i2c operator * (); i2c_p(unsigned short a); }; использую его так: i2c_p p(10),q(20); p=q; //так компилирует p=q+1 //а так пишет ошибку :huh: Error[Pe350]: more than one operator "+" matches these operands: built-in operator "arithmetic + arithmetic" function "i2c_p::operator+(unsigned short)" operand types are: i2c_p __near + int Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
freux 0 12 августа, 2005 Опубликовано 12 августа, 2005 · Жалоба Сождаётся впечатление что запись operator char(); он принимает за перегрузку плюса <{POST_SNAPBACK}> Компилер не знает какой из операторов + использовать: встроенный или перегруженный, так как у тя имеется оператор char(), которым объект типа i2c_p приводится к char, а char, в свою очередь имеет неявное пробразование в int, ну или там unsigned short. Сделай вместо перегруза char функцию: char toChar() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться