25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
1

Перегрузка *

12.02.2013, 18:32. Показов 498. Ответов 9
Метки нет (Все метки)

Есть такой класс:
C++
1
2
3
4
5
class CMatrix{
  valarray<valarray<double> > matrix;
public:
  CMatrix operator* (const CMatrix &M);
};
Я перегрузил оператор умножения на матрицу и все нормально работает.
Как мне теперь перегрузить умножение на число типа double и int?
я вот так делаю не работает:
C++
1
 template<class T> CMatrix operator* (T &a);
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2013, 18:32
Ответы с готовыми решениями:

Перегрузка в виде метода VS Перегрузка в виде функции друг
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Перегрузка << и >>
помогите сделать так чтобы &lt;&lt; и &gt;&gt; в int main() работали... Printers.h class Printers {...

Перегрузка >>
Перегрузила оператор в соответствии с примером в документации std::istream &amp;operator&gt;&gt;...

9
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.02.2013, 19:11 2
Цитата Сообщение от MAnton Посмотреть сообщение
я вот так делаю не работает:
что конктретно не работает?
0
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
17.02.2013, 19:22  [ТС] 3
Всегда вызывается функция умножение на матрицу а не на число
0
Эксперт С++
1666 / 1038 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.02.2013, 19:24 4
Если надо только для double и int, перегрузи без шаблонов только для double, остальные числовые типы неявно приведутся к этому виду. Ну и разумеется, параметр должен быть const-ссылкой.
1
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
17.02.2013, 19:46  [ТС] 5
Теперь работает, если без шаблона, но а если нужно будет сделать умножение на комплексное число?
При условии что класс будет шаблоном
0
Эксперт С++
1666 / 1038 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.02.2013, 19:51 6
Всё то же самое - оставить параметр const-ссылкой. Кстати, и сам оператор тоже определить как const, потому что он не изменяет содержимое матрицы-множителя:
C++
1
template<class T> CMatrix operator* (const T &rhs) const;
1
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
17.02.2013, 20:31 7
Скромно добавлю, что одного const тут все еще не хватает.
C++
1
template<class T> const CMatrix operator* (const T &rhs) const;
теперь тип CMatrix будет совместимым со встроенными по поведению
0
Эксперт С++
1666 / 1038 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.02.2013, 20:38 8
Это вопрос спорный, особенно когда начинаем использовать move-семантику, которая в данном случае может оказаться очень уместна.
0
3409 / 2768 / 751
Регистрация: 25.03.2012
Сообщений: 10,042
Записей в блоге: 1
17.02.2013, 20:54 9
Цитата Сообщение от Nick Alte Посмотреть сообщение
move-семантику
что это такое?
0
Эксперт С++
1666 / 1038 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.02.2013, 21:15 10
Это очень полезное нововведение в C++11, которое позволяет избежать лишних копирований "грузных" объектов вроде строк и контейнеров, а также безболезненно хранить свои аналогичные объекты (в том числе и не допускающие копирования) в контейнерах STL и возвращать их из функций, а заодно удачно сочетается с другими возможностями.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2013, 21:15

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Перегрузка >>
Доброго времени суток. Есть учебный пример перегрузки операций &gt;&gt; и &lt;&lt;. #include &quot;stdafx.h&quot;...

перегрузка []
Есть класс, и почему компилятор выдает ошибку на функции int &amp;operator(int); #ifndef ARRAY1_H...

перегрузка в с++
Помогите нужно очень срочно!недавно писал о перегрузке есть перегрузка постфиксного инкремента ...

Перегрузка
Мне задали там описать ромб и найти периметр и площадь вывести на екаран отдельным методом ( ето...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.