Форум программистов, компьютерный форум CyberForum.ru

Перегрузка оператора * - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор с поддержкой русского языка http://www.cyberforum.ru/cpp-beginners/thread747323.html
Использую MS Visual с++ 6.0, но он не поддерживает русского языка. Если в коде есть русские буквы - он заменяет их какими то непонятными символами. Подскажите какой другой компилятор выбрать, чтобы русскоязычные слова выводились нормально.
C++ как записать код задачи VS2010 Добрый вечер, я тут новенькая) дана дробь, наметки кода: #include "StdAfx.h" #include <iostream> #include <cmath> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread747322.html
двоичное дерево C++
Здравствуйте. Вот написал дерево через шаблоны: #include <iostream> using namespace std; template <class T> class BinaryTree { protected:
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции C++
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции. Надо написать функцию в C++
C++ Два треугольника заданы координатами своих вершин. Найти сумму длин вписанных в них окружностей. Вычисления длины окружности, вписанной в треугольник http://www.cyberforum.ru/cpp-beginners/thread747307.html
Два треугольника заданы координатами своих вершин. Найти сумму длин вписанных в них окружностей. Вычисления длины окружности, вписанной в треугольник оформить в виде подпрограммы. Надо написать программу
C++ с 1. Описать структуру с именем TRAIN, которая содержит следующие поля: -NAZV - название пункта назначения; -NUMR - номер поезда; -DATE - дата отправления -TIME - время отправления. Написать программу, отдельными функциями выполняет следующие действия: -ввод с клавиатуры данных в массив RASP, состоящей из N переменных типа TRAIN; -упорядочение записей по алфавиту по названиям пунктов... подробнее

Показать сообщение отдельно
Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
27.12.2012, 07:32     Перегрузка оператора *
Цитата Сообщение от Grinning liar Посмотреть сообщение
Что тогда следует возвращать в функции перегрузки?
Если тебе нужно изменить исходную матрицу, то можно вернуть *this. Только тогда логичнее заменить оператор * на *=.

C++
1
2
3
4
5
6
7
Matrix const Matrix::operator*= (float x) {
 
    for (int i = 0; i < size; i++)      
        for (int j = 0; j < size; j++)
                mas[i][j] = mas[i][j]*x;
    return *this;
}
После этого можно делать такой вызов: m1 *= 6; - элементы матрицы умножатся на 6.

Если нужно именно умножение, возвращающее результат, и не изменяющее исходный объект, то создай в функции новый объект и возвращай его.

C++
1
2
3
4
5
6
7
8
9
10
Matrix const Matrix::operator* (float x) const {
 
    Matrix res;
    res.size = size;
  
    for (int i = 0; i < size; i++)      
        for (int j = 0; j < size; j++)
                res.mas[i][j] = mas[i][j]*x;
    return res;
}
После этого можно вызывать: m2 = m1 * 6;

Только сделай нормальный конструктор, в котором будет выделяться память, и отдельно методы для ввода-вывода, а не группируй все в один метод create_mas.

Добавлено через 2 минуты
Цитата Сообщение от Grinning liar Посмотреть сообщение
float **mas = new float *[size];
Тут еще ошибка, создается локальная переменная mas, которая имеет просто одинаковое имя с элементом класса. Нужно:
C++
1
mas = new float *[size];
 
Текущее время: 00:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru