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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gizmos
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
#1

Использование перегрузки = для списка в составе класса - C++

31.10.2013, 04:36. Просмотров 233. Ответов 0
Метки нет (Все метки)

Всем привет. Проблема такая: имеется класс, реализующий работу с длинными числами. Для представления длинного числа используется односвзязный список. Дабы было легче было работать, для списка перегрузил операцию равенства, но когда попытался использовать её в конструкторе начало ругаться плохими словами. Прошу помочь, заранее спасибо за ответы (компилятор Dev-C++)
Класс длинных чисел:
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
class UnsignedVast {
    friend ostream &operator<< (ostream &, UnsignedVast &);
    friend istream &operator>> (istream &, UnsignedVast &);
    public:
        UnsignedVast()  {separator = 0; size = 0;}
        UnsignedVast(size_t);
        UnsignedVast(ulreal);
        UnsignedVast(const UnsignedVast &);
        UnsignedVast(strng);
        UnsignedVast &operator+ (UnsignedVast &);
        UnsignedVast &operator- (UnsignedVast &);
        UnsignedVast &operator* (UnsignedVast &);
        UnsignedVast &operator/ (UnsignedVast &);
        UnsignedVast &operator= (UnsignedVast &);
        bool &operator== (UnsignedVast &);
        bool &operator< (UnsignedVast &);
        bool &operator> (UnsignedVast &);
        bool &operator<= (UnsignedVast &);
        bool &operator>= (UnsignedVast &);
        size_t GetSize();
    private:
        void StrtoUnsignedVast(strng, UnsignedVast &);
        size_t size;
        size_t separator;
        List<short> vast; //сам список
};
А вот код перегрузки для шаблона списка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class v_type>
List<v_type> &List<v_type>::operator=(List<v_type> &right)
{
    if (this == &right)
        return *this;
    if (size > right.GetSize())
        Destroy(right.GetSize() + 1, size);
    if (size < right.GetSize()) 
        InsertFree(0, size, right.GetSize() - size);
    Node *curr = head;      
    for (size_t i = 0; i <= right.GetSize() - 1; i++)
    {
        curr->data = right[i];
        curr = curr->next;
    }
    return *this;
}
Наконец место где выдается ошибка:
C++
1
2
3
4
5
6
UnsignedVast::UnsignedVast(const UnsignedVast& cpy)
{
    size = cpy.size;
    separator = cpy.separator;
    vast = cpy.vast; //ошибка no match for 'operator=' in '((UnsignedVast*)this)->UnsignedVast::vast = cpy.UnsignedVast::vast'
}
П.С. файл с шаблоном списка (List<v_type>) подключен в хедер класса длbнных чисел (UnsignedVast)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 04:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование перегрузки = для списка в составе класса (C++):

Использование перегрузки операторов для комплексного числа - C++
Перезагрузить функции для разных типов входных данных, или создать шаблоны функций, или переопределить операции для указанных пользователем...

Использование функций-членов для перегрузки унарных операторов - C++
Добрый день уважаемые коллеги. Возник вопрос. как работают эти строки? three_d operator+(three_d op2);// оператор ор1 передается...

Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса - C++
Здравствуйте! Можно ли использовать перегруженный оператор ввода/вывода в поток из базового класса для объекта производного класса, если...

Получение числа и использование перегрузки функции - C++
Приветствую! Необходимо написать две версии общей функции get_number таким образом, чтобы функция get_number могла быть использована для...

Получение числа и использование перегрузки функции - C++
Приветствую! Необходимо написать две версии общей функции get_number таким образом, чтобы функция get_number могла быть использована для...

Вызов перегрузки базового класса - C++
Начитавшись c# забыл кое-что по с++, никак теперь не могу вспомнить как вызвать перегрузку базового класса в перегрузке наследника. Есть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 04:36
Привет! Вот еще темы с ответами:

Запрещение перегрузки public методов базового класса - C++
Можно ли запретить наследникам перегружать public методы базового класса? Если да то как? class base { public: void...

Как переделать friend-перегрузки ввода/вывода в метод класса? - C++
Доброго времени суток! Есть вопрос: как переделать френдовые перегрузки ввода\вывода в метод класса? Или же как шаблонить френдовые...

Использование линейного списка для хранения последовательности - C++
Разработать программу, которая организует с использованием линейного списка хранение последовательности, а так же выполняет следующие...

Использование модификатора static для элементов класса - C++
Доброго время суток! Господа, бьюсь бьюсь в двух средах разработки и с одной книжкой... И есть чувство - что виноваты не лыжи...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru