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

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

Восстановить пароль Регистрация
 
gizmos
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
31.10.2013, 04:36     Использование перегрузки = для списка в составе класса #1
Всем привет. Проблема такая: имеется класс, реализующий работу с длинными числами. Для представления длинного числа используется односвзязный список. Дабы было легче было работать, для списка перегрузил операцию равенства, но когда попытался использовать её в конструкторе начало ругаться плохими словами. Прошу помочь, заранее спасибо за ответы (компилятор 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 04:36     Использование перегрузки = для списка в составе класса
Посмотрите здесь:

Итератор для своего контейнерного класса-списка C++
как переделать френдовые перегрузки ввода\вывода в метод класса? C++
Вызов перегрузки базового класса C++
C++ Запрещение перегрузки public методов базового класса
C++ Отсутствие списка аргументов для класса
C++ Разработать шаблон класса для реализации односвязного списка
C++ Использование #define для доступа к элементам класса
C++ Использование линейного списка для хранения последовательности
C++ Использование перегрузки операторов для комплексного числа
C++ Использование модификатора static для элементов класса
C++ Использование универсальной инициализации для объектов своего класса
C++ Использование функций-членов для перегрузки унарных операторов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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