Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перегрузка оператора = - 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;}} и как...
C++ В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов. Заранее спасибо :) http://www.cyberforum.ru/cpp-beginners/thread1097583.html
C++ Необходимо вывести двоичное представление числа на экран.
Собственно само задание.. Код вроде вполне правильный, но все же не работает(( Не могу понять в чем проблема.. Прошу руку помощи)) С клавиатуры вводится целое число. Необходимо вывести его...
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 элементов...
C++ Задан файл из целых чисел со знаком, разделенных пробелом. Произвести чтение этих чисел в обратном порядке, не читая предыдущие. Есть множество задач анализа данных, записанных в файле, которые можно решить за "линию", не обязательно, сохраняя данные в оперативную память, если бы они поступали "с конца". А прямой анализ... подробнее

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

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

16.02.2014, 02:27. Просмотров 354. Ответов 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, вроде работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.