Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перегрузка оператора * для двух разных классов  (Прочитано 7394 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« : 22-05-2010 18:59 » 

У меня есть класс matrix и класс MyVector. Я хочу перегрузить для них обоих оператор * То есть умножить матрицу на вектор. Возмоно ли это ? И если возможно, дайте пожалуйста примерчик или ссылочку где можно об этом прочитать поподробней. 
Записан
RXL
Технический
Администратор

ru
Online Online
Пол: Мужской

WWW
« Ответ #1 : 22-05-2010 22:34 » 

Так в чем вопрос то?
« Последнее редактирование: 22-05-2010 22:36 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 23-05-2010 02:24 » 

Код:
class MyVector
{
public:
const MyVector& operator * (const MyVector& src)
{
...
...
return *this;
}

const matrix& operator * (const matrix& src)
{
...
...
return *this;
}

};

class matrix
{
public:
const matrix& operator * (const matrix& src)
{
...
...
return *this;
}

const MyVector& operator * (const MyVector& src)
{
...
...
return *this;
}
};
« Последнее редактирование: 23-05-2010 15:50 от Алексей1153++ » Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 23-05-2010 09:18 » 

То есть без всякого friend....
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 23-05-2010 10:22 » 

Янус, а при чём тут friend ?
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 23-05-2010 10:25 » 

Янус, не путай теплое с мягким.
Я так понимаю - все зависит от реализации. Если ты будешь испольовать только public свойства и методы другого класса - то тебе friend не нужен.
Записан
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 23-05-2010 15:09 » 

Янус, не путай теплое с мягким.
Я так понимаю - все зависит от реализации. Если ты будешь испольовать только public свойства и методы другого класса - то тебе friend не нужен.
В том то и дело, что нужен доступ к private методам, хотя все как мне кажется решаемо... Меня смущает следующее: если метод дружественен к обоим классам, то он прописывается в членах методах обоих классов. И если метод возвращает объект класса MyVector, то как отреагирует компилятор если его прописать в классе matrix ? извините если написано несколько сумбурно. Повторюсь, я новичок. И заранее спасибо всем кто помогает, разобратся.
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 23-05-2010 15:29 » 

ИМХО: любая правильная реализация классов может обойтись без затрагивания private области класса. Friend (как я считаю) придумано для оптимизации (читай - скорости) доступа, но можно обойтись и без него. Наверное будь я преподавателем - запретил бы его использовать в работах Улыбаюсь

P.S. Мой опыт с С++ очень мал - в основном теория и лабораторные. Все мои коммерческие проекты были на Delphi, так что вполне могу ошибаться и что-то путать...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 23-05-2010 15:49 » 

ИМХО, всегда можно обойтись без friend. И нужно Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines