Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перегрузка операторов в iare
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Пришелец
Для класса перегрузил оператор + всё ок затем добавил перегрузку привидения типа к 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.gif
IgorKossak
Видимо дело в конфликте явного и неявного приведений типа к char.
Попробуйте не делать явных приведений, а перегрузите оперетор для других нужных типов.
Пришелец
Нет явного приведения не делается blink.gif
Пришелец
Кстати если убрать перегрузку плюса то он перестаёт ругаться и выдаёт сообщение о неправильном приведении типа

Сождаётся впечатление что запись
operator char();
он принимает за перегрузку плюса
dxp
Цитата(Пришелец @ Aug 11 2005, 19:43)
Кстати если убрать перегрузку плюса то он перестаёт ругаться и выдаёт сообщение о неправильном приведении типа

Сождаётся впечатление что запись
operator char();
он принимает за перегрузку плюса
*

Вы бы код привели лучше, мы бы сами посмотрели, чем гадать...
Пришелец
Вот объявление класса:

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.gif
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
Цитата(Пришелец @ Aug 11 2005, 16:39)
Сождаётся впечатление что запись
operator char();
он принимает за перегрузку плюса
*

Компилер не знает какой из операторов + использовать: встроенный или перегруженный, так как у тя имеется оператор char(), которым объект типа i2c_p приводится к char, а char, в свою очередь имеет неявное пробразование в int, ну или там unsigned short. Сделай вместо перегруза char функцию: char toChar()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.