Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61

Переопределение операторов

26.10.2009, 17:53. Показов 2778. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Еще раз об этом интересном вопросе. У меня есть матрицы , условно назовём их тип matrix, есть библиотека, имеющая в своём составе функции операций линейно алгебры, аналогичные обычным, т.е. сложение/вычитание/умножение/деление и т.д. , я бы хотел переопределить стандартные арифметические операторы для этих матриц, т.е.
matrix A,B,C;
C = A + B;
где
C++
1
2
3
4
matrix &operator +(matrix &X,matrix &Y)
{
return add(X,Y);
}
(add - функция сложения из библиотеки, возможно я неправильно написал код, особо с ними не работал)
Везде, где я встречал, речь шла о переопределении-перегрузке операторов как функций - членов класса. Возможно ли написать обычные сишные функции для перегрузки операторов или перегрузка - прерогатива ООП и они перегружаются по стандартам С++ как методы класса? Если так, то мне надо сделать класс - обертку для этого? И какая область видимости такой функции? Можете привести пример кода или ссылку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2009, 17:53
Ответы с готовыми решениями:

переопределение операторов
Стоит следующая задача. Надо сделать массив чар, которые представляют собой строку (специально делать так, а не через string) и надо...

Переопределение операторов
Доброго времени суток.. В древние времена, когда ещё жили мамонты, ковырял я потихоньку плюсы.. Потом был долгий перерыв, и, как итог -...

переопределение операторов
Писал прогу с переопределнием операторов, всё работало, теперь когда мне понадобилась та либа, в ней ничего не работает =( ...

6
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
26.10.2009, 18:06
blackswan,
Возможно ли написать обычные сишные функции для перегрузки операторов
невозможно.

Если так, то мне надо сделать класс - обертку для этого?
class matrix
{
... - тут обертки для Си-функций

перегрузка оператора сложения
friend matrix operator+(const matrix& a, const matrix& b);
};

здесь будет собственно тело функции
matrix operator+(const matrix& a, const matrix& b) ...
0
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 18:13  [ТС]
вот так?
C
1
2
3
4
5
6
7
8
class matrix
{
friend matrix operator+(const matrix& a, const matrix& b);
};
matrix operator+(const matrix& a, const matrix& b)
{
return add(a,b);
}
этого будет достаточно, чтоб я мог написать :
matrix A,B,C;
C = A + B;
?
а что случиться с самим истинным классом matrix? Разве этим я его не переопределяю? Кстати, я не уверен, что это класс, возможно это обычный массив.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
26.10.2009, 18:22
blackswan,

вот так?
я не знаю что это за функция add, поэтому не могу сказать

должно быть примерно так (cmatrix это структура для Си, в которой объявлена матрица):

- временные переменные
cmatrix m1, m2;

- тут ты каким-либо образом запихиваешь данные из a и b в m1 и m2

- тут будет результат для Си-структуры:
cmatrix result;

- сложение через Си-функцию
matrix_add(&result, &m1, &m2);

- преобразование в C++ - класс
matrix out(result);

return out;

а что случиться с самим истинным классом matrix?
что такое "истинный" класс? где-то ещё есть не-истинный?
0
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 18:29  [ТС]
функция add выглядит так matrix add(matrix A,matrix B), она сама возвращает результат через своё имя.
что такое "истинный" класс? где-то ещё есть не-истинный?
ну предложенный класс называется matrix, также как и тип моих матриц, возможно matrix - это уже класс, описывающий мои матрицы.
0
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61
28.10.2009, 10:11  [ТС]
что-то моя тема потерялась среди других, так что насчет моего предыдущего поста?
0
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 44
30.11.2009, 13:55
А вы бы не могли написать свой код библиотеки!!! Очень нужно!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2009, 13:55
Помогаю со студенческими работами здесь

Переопределение операторов С++
Помогите разобраться с переопределением операторов, как что и куда записывается, какие параметры. Если можно, ссылку на полезную статью, в...

Переопределение операторов
Плиз помогите сделать задачку.. Написать класс StrangeInt для которого нижеследующий код StrangeInt x = 5; StrangeInt y = 3; ...

Переопределение операторов и массивы
Task* operator+=(Task *newTasks) { Task *finalTask = tasks + newTasks; } Error: 1 IntelliSense: выражение должно...

Создать класс строку в С++. Переопределение операторов
Доброго времени суток. Подскажите пожалуйста в чём ошибка в операторе >>. Когда его вызываю в основной программе, то почему-то компилятор...

Возможно ли переопределение операторов для пользовательских типов?
Собственно преследуемая цель: Определить свой тип int - myint. Переопределить для него операторы как надо. Ну, например, надо мне при...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru