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

Перезагрузка operator - - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод полей класса после сравнения http://www.cyberforum.ru/cpp-beginners/thread303324.html
Проблема: (Нужно отыскать нужный фильм и вывести данные об нем.) Если еще конкретнее, то почему после успешного сравнения некорректно выводятся данные об фильме: название выводится правильно, а вот жанру фильма почемуто ставится в соотвествие данные следующего за ним поля ?? (Ход решения и 2 скрина с входными данными и результатом работы см.ниже). Имеется класс "фильмы" с полями назвиние,...
C++ консольная программа с выводом меню Помогите пожалуйста!!! Написать программу, которая выводит на экран меню: 1. Запись чисел в файл 2. Поиск в файле наименьшего числа и его порядкового номера 3. Выведения на экран содержимого файла 4. Выход из программы Программа работает в цикле и продолжает роботу пока не будет выбрано пункт меню 4. При виборе 1 пункту меню происходит запись введенных с клавиатуры чисел в файл с именем... http://www.cyberforum.ru/cpp-beginners/thread303304.html
В чем заблуждение? (структуры) C++
вообщем, программа, структура, сожержащая в себе информацию об авторах книг, их названии и тираже. нужно вывести самого популярного автора. выводит. Но если их несколько например Пушкин 20 книг и Лермонтов 20 книг, нужно написать, что самого популярного автора нет. привожу текст программы, ниже вопрос. #include<stdio.h> #include<string.h> typedef struct {char avtor; ...
C++ Вывести дату, следующую за указанной
Даны два целых числа: D(день) и M(месяц), определяющие правильную дату невысокосного года. Вывести значения D и M для даты, следующей за указанной.
C++ Получить все такие натуральные q, что n делится на qв квадрате и не делится на q в кубе http://www.cyberforum.ru/cpp-beginners/thread303289.html
Дано натуральное число n. Получить все такие натуральные q, что n делится на qв квадрате и не делится на q в кубе. В С++, желательно с комментариями, на сколько возможно, конечно=))спасибо!
C++ Сложение пар чисел в одномерном массиве Здравствуйте. Подскажите пожалуйста как можно реализовать такого вида код: дан массив из 4 чисел, найти все возможные суммы чисел. Например числа:1, 2 ,3, 4. Результат: 1+2 1+3 1+4 2+3 2+4 3+4 подробнее

Показать сообщение отдельно
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
24.05.2011, 07:45     Перезагрузка operator -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Vector& Vector::operator - ( const Vector &rigth)
{
        Vector Temp(size);
        int temp1=0;
        int temp2=0;
        
 
        for (int i=0; i<size; i++)
        {
                temp1=rigth.ptr[i];
                temp2=ptr[i];
                Temp[i]=temp1-temp2;
        }
        return Temp;
 
 
 
}
у тебя функция возвращает Temp, для которого вызывается деструктор который уничтожает его, поэтому ссылка недействительна! Надо хотя бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Vector& Vector::operator - ( const Vector &rigth)
{
        Vector *Temp = new Vector(size);
        int temp1=0;
        int temp2=0;
        
 
        for (int i=0; i<size; i++)
        {
                temp1=rigth.ptr[i];
                temp2=ptr[i];
                (*Temp)[i]=temp1-temp2;
        }
        return *Temp;
 
 
 
}
далее опереатор присвоения какой-то странный, непонятно чё он делает. Помоему так надо, и ещё я бы this->size = right.size добавил, но у тебя там какая-то жёсткая схема и так будет работать
C++
1
2
3
4
5
6
7
8
bool Vector::operator =(const Vector &rigth)
{
        for (int i=0; i<size; i++)
        {
                ptr[i] = rigth.ptr[i];
        }
        return true;
}
после этих исправлений прога перестала вылетать

комментарии тоже странные
Цитата Сообщение от Lotys Посмотреть сообщение
//перезагрузка операции унарного "-"
один аргумент типа this, или как там правильно сказать, а второй который ты передаёшь в функцию.
Унарный это такая штука
C++
1
bool operator-();
его допиши и будет у тебя перегруженный оператор

ещё мне кажется что это штука накроется медным тазом при size = 1
C++
1
2
3
4
5
Vector::~Vector()
{
        cout<<"Goodby Vectorcheg!"<<endl;
        delete [] ptr;
}
ну и какие-то косяки при вводе векторов, я не разобрался, а может так и должно быть...

Добавлено через 3 минуты
или убери значёк &, означающий передачу по ссылке в operator-(const Vector&), так как у тебя есть конструктор копирования, он скопирует твой Temp, но по ссылке не передавай, она недействительна
 
Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru