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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Кракозябра кадировки http://www.cyberforum.ru/cpp-beginners/thread993334.html
Здравствуйте, имеется вот такой кодик который найден в интернете, проблема в том что у меня он выводит не то что должен. Первую букву названия файла и краказябру вместо русского названия. А идея в выводе списка всех имен файлов в определённом каталоге #include <windows.h> #include <stdio.h> #include <conio.h> #include <iostream>
C++ оператор break Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И что его можно использовать только если без него совсем никак не получается. Я правильно понимаю? http://www.cyberforum.ru/cpp-beginners/thread993331.html
C++ Выходной поток первого числа, второго , суммы первого и второго чисел
Здравствуйте! Помогите пожалуйста написать программу, которая через стандартный входной поток принимает текстовые строки, в каждой из которых через пробел или символ табуляции записана пара действительных чисел (например, "31.528 23.836"), а затем в стандартный выходной поток выводит строки, которые содержат первое число, второе число, сумму первого и второго чисел (например, "31.528 23.836...
C++ Абстрактные классы
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the following virtual functions are pure within 'classB':virtual void classA::Add() #include <iostream> #include <string> #include <cstdlib> using namespace std;
C++ почему работает несмотря ни на что? http://www.cyberforum.ru/cpp-beginners/thread993317.html
код : #include <iostream> using namespace std; int main() { int u; cin>>u; int uu; for (int i=0;i<u;i++) uu=i; for (int i=0;i<u;i++) cout<<i<<" "; return 0; }
C++ Написать программу, которая подсчитывает разные математические величины II. Написать программу, которая подсчитывает: 1) периметр квадрата, площадь которого равна а; 2) площадь равностороннего треугольника, периметр которого равен р; 3) расстояние между точками с координатами а, b и c,d; 4) среднее арифметическое кубов двух данных чисел; 5) среднее геометрическое модулей двух данных чисел; 6) гипотенузу прямоугольного треугольника по двум данным катетам а, Ь.... подробнее

Показать сообщение отдельно
gizmos
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 6
31.10.2013, 04:36     Использование перегрузки = для списка в составе класса
Всем привет. Проблема такая: имеется класс, реализующий работу с длинными числами. Для представления длинного числа используется односвзязный список. Дабы было легче было работать, для списка перегрузил операцию равенства, но когда попытался использовать её в конструкторе начало ругаться плохими словами. Прошу помочь, заранее спасибо за ответы (компилятор 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru