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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление всех элементов вектора http://www.cyberforum.ru/cpp-beginners/thread1097589.html
Как удалить все элементы вектора. Например Создаём пустой вектор vector<int>numb; заполняем его пятью элементами while(cin>>numbr){numb.push_breack(numbr);g+=1;if (g == 5){breack;}} и как теперь вернуть массив к первоначальному виду?. Что бы он был пустой, как будто его только что объявили? vector<int>numb; т.е. не содержал ни одного элемента.
C++ В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов. Заранее спасибо :) http://www.cyberforum.ru/cpp-beginners/thread1097583.html
C++ Необходимо вывести двоичное представление числа на экран.
Собственно само задание.. Код вроде вполне правильный, но все же не работает(( Не могу понять в чем проблема.. Прошу руку помощи)) С клавиатуры вводится целое число. Необходимо вывести его двоичное представление на экран. Программа должна поддерживать все целочисленные типы данных языка реализации (char, int, long int, unsigned int, unsigned long int для языка C/C++, integer, byte, word,...
C++ Выводит какую то ересь
В общем начал выполнять свою лабораторную, задание которой было таковым: "В заданном предложении указать слово, в котором доля гласных(A, E, I, O)(a, e, i, o) максимальна. Предложение может иметь больше одной строки и заканчивается точкой" Прошу не осуждать что программа без функций. Пока делаю так потом переделаю... Пока что я пробую вывести на экран таблицу(матрицу) в которой будет...
C++ Инвертировать символы (разместить задом наперед) в указанной строке http://www.cyberforum.ru/cpp-beginners/thread1097565.html
Напишите программу, которая 1. Вводит с клавиатуры число записей в массиве структур n -целое число. 2. Создает динамический массив структур типа: struct rec_{int i; char *cp;} из n элементов (записей). 3. В цикле заполняет массив структур следующими данными: i – порядковый номер записи, cp указывает на введенную с клавиатуры строку символов, которая сохраняется в динамическом массиве с...
C++ Задан файл из целых чисел со знаком, разделенных пробелом. Произвести чтение этих чисел в обратном порядке, не читая предыдущие. Есть множество задач анализа данных, записанных в файле, которые можно решить за "линию", не обязательно, сохраняя данные в оперативную память, если бы они поступали "с конца". А прямой анализ занимал бы полином степени повыше. Читать файл с конца- это конечно утопия, но компьютер способен на многое. Я нахожусь в поиске стандартных функций, которые реализовывали бы это, возможно,... подробнее

Показать сообщение отдельно
RocBoy-D
32 / 31 / 7
Регистрация: 10.03.2012
Сообщений: 362

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

16.02.2014, 02:27. Просмотров 331. Ответов 4
Метки (Все метки)

Здравствуйте! При попытке заменить объект пользовательского класса q4 на q6 в контейнере set появляется ошибка: error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Queue' (or there is no acceptable conversion). Как правильно перегрузить оператор = ? Интерфейс класса:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <iomanip>
 
using namespace std;
 
class Queue
{
    char *array;
    int N;
   public:
    Queue ();
    Queue (int);
    Queue (char *, int);
    Queue (const Queue &);
    void Add (char);
    int In (char);
    char Get ();
    char *Get_Queue () const;
    int Get_Length () const;
    char &operator [] (int);
    Queue &operator = (const Queue &);
    friend bool operator == (const Queue &, const Queue &);
    friend bool operator < (const Queue &, const Queue &);
    friend istream &operator >> (istream &, Queue &);
    friend ostream &operator << (ostream &, Queue &);
    ~Queue ();
};
Перегрузил вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
Queue &Queue :: operator = (const Queue &obj)
{
    if (this == &obj)
        return *this;
 
    N = obj.N;
    array = new char [obj.N + 1];
    strcpy (array, obj.array);
 
    return *this;
}
А в main меняю объекты:
C++
1
2
3
4
5
6
7
8
9
set <Queue> exemple1;
    Queue q1 ("queue 1", 7), q2 ("queue 2", 7), q3 ("queue 3", 7), q4 ("queue 4", 7), q6 ("queue 6", 7);
 
        exemple1.insert (q1);
    exemple1.insert (q2);
    exemple1.insert (q3);
    exemple1.insert (q4);
 
       replace (exemple1.begin(), exemple1.end(), q4, q6);
Спасибо!

Добавлено через 12 минут
Или все дело в том, что я использую контейнер set? Проверил эту же операцию с контейнером vector, вроде работает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru