Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 'operator*' not implemented in type ... 
:(
    Опции темы
asdf
Дата 23.4.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



Код

//...
  friend CLong operator -(CLong& a1, CLong& a2)
//...
  friend CLong operator *(CLong& a1, CLong& a2)
//...
  friend CLong operator /(CLong& a1, CLong& a2)
//...
  friend CLong operator %(CLong& a1, CLong& a2)
  {
    return a1 - ( ( a1 / a2 ) * a2);
  }
//...



Цитата
[C++ Error] Long.h(106): E2093 'operator*' not implemented in type 'CLong' for arguments of the same type




почему?
--------------------
... 
PM MAIL   Вверх
tigger
Дата 3.5.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



Ошибка у тебя заключается в следующем:

- при определении класса ты не определил переменную где должны храниться данные класса, в операторах ты делишь, умножаешь сами классы а не их данные;

- перегрузка операторов не позволяет изменить ассоциативность и приоритеты операций
т.е.

ассоциативность операций * / - идет слево направо: А - В - В компилятор переведет как A.operator-(В) - B -> (A.operator-(B)).operator-(B)

так и приоритеты операций должны идти слева на право сначало * / затем - (выше к ниже)
а у тебя идет сначало минус а затем умножение с делением которые должны выполниться первей
да и чтобы это все работало нельзя использовать друзей класса

для большей ясности прилогаю код как должно быть...

Код

class CLong
{
public:
  float a;  //здесь хранятся данные класса
  CLong(){a = 0;}
  CLong operator-(CLong& a1);
  CLong operator*(CLong& a1);
  CLong operator/(CLong& a1);
  CLong operator%(CLong& a1)
  {
    CLong tmp;
    tmp.a = a - ( ( a / a1.a ) * a1.a);
    return tmp;
  }
};

 CLong CLong::operator*(CLong& a1)
  {
   CLong tmp;
   tmp.a = a * a1.a;
   return tmp;
  }

  CLong CLong::operator-(CLong& a1)
  {
  CLong tmp;
  tmp.a = a - a1.a;
  return tmp;
  }

  CLong CLong::operator/(CLong& a1)
  {
  CLong tmp;
  tmp.a = a / a1.a;
  return tmp;
  }


void main()
{
CLong h,g,f;
h.a = 35.5;
g.a = 5.5;
f = h * g;  //умножение
f = h - g;  //вычитание
f = h / g;  //деление
f = h % g;  //остаток от деления
f = ((h / g) * g) - h;   //так можно
//f = h -((h / g) * g);           так нельзя
//a1 - ( ( a1 / a2 ) * a2);    так нельзя
//( ( a1 / a2 ) * a2) - a1;    так можно
}


ну вот и все если что пиши... smile


--------------------
user posted image
PM MAIL   Вверх
Adil'
Дата 4.5.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



shurick, просто сделай так:
Код

  friend CLong operator -(const CLong& a1, const CLong& a2)
  ...
  friend CLong operator *(const CLong& a1, const CLong& a2)
  ...
  friend CLong operator /(const CLong& a1, const CLong& a2)
  ...
  friend CLong operator %(const CLong& a1, const CLong& a2)
  {
    return a1 - ( ( a1 / a2 ) * a2);
  }
- и все будет хорошо smile



--------------------
Удачи
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.