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

Правильно сделана перегруженная операция присваивания? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод контейнера типа set <string> в файл http://www.cyberforum.ru/cpp-beginners/thread928285.html
Конечный файл пустует, я всяко-разно пытался, вот мой вариант с итераторами. Смотрите закоментированный код - всё остальное полностью рабочее, кроме вывода в файл. #include <iostream> #include <algorithm> #include <string> #include <iterator> #include <set> #include <fstream> #include <cstdlib> #include <vector>
C++ Vector в С++(2) у меня есть абстрактный класс Фигура (базовый), от него наследуются классы Circle, Rectangle , я создал вектор типа указатель на Фигура и положил туда вперемешку объекты классов Окружность и Прямоугольник, а теперь мне нужно вызвать методы каждого объекта вектора, мне подсказали, как написать этот метод, но не пойму почему надо так (выделено желтым) базовый класс: class Figure { public:... http://www.cyberforum.ru/cpp-beginners/thread928278.html
C++ Как написать программу с несколькими .cpp файлами
Как написать программу с несколькими .cpp файлами? Сколько сам пробывал, появляется куча ошибок( Конкретно меня интересует, как их соединить вместе IDE - Microsoft Visual Studio 2010
Не могу собрать программу C++
собираю в netbeans + cygwin исходники выдает ошибку не знаю как исправить. TCPClient.cpp // TCPClient.cpp : Defines the entry point for the application. // #include "stdafx.c"
C++ Вызов dll ресурсов в dll http://www.cyberforum.ru/cpp-beginners/thread928212.html
Помогите пожалуйста, вот такого рода проблемка вышла: Есть у меня dll и есть необходимость вызвать ресурс в потоке dll файла, который создается при подключении. Ресурс объявляю как обычно это делаю в exe проектах: выбираю создать ресурс, выбираю файл, в resource.h беру ID ресурса, а сам .h инклюдом подключаю. При попытке проверить ресурс функцией FindResource. Передаю ей модуль (получаю из...
C++ Как в main() создать указатель на функцию, которая находится в классе? В этом примере как определить указатель на функцию F()? class A { public: bool F(int &a, int &b) { return a<b; } }; int main() { подробнее

Показать сообщение отдельно
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
24.07.2013, 21:56  [ТС]     Правильно сделана перегруженная операция присваивания?
Сортировка списка не работает.
Вот программа





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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
template<typename T>
bool IsMinToMax(const T &a, const T &b)         { return a<b; }
 
template<typename T>
bool IsMaxToMin(const T &a, const T &b)         { return a>b; }
 
 
 
 
// узел
template<typename T>
struct TNode
{
    ~TNode();
    TNode<T> *operator=(const TNode<T> *right);
 
    T value;                    // значение
    TNode<T> *ptrPrev;          // указатель на предыдущий узел
    TNode<T> *ptrNext;          // указатель на следующий узел
};
 
template<typename T>
TNode<T>::~TNode()
{
    delete this;
}
 
 
template<typename T>
TNode<T> *TNode<T>::operator=(const TNode<T> *right)
{
    delete *this;
    this=right;
    return this;
}
 
 
 
 
 
template<typename T>
class TCList
{
public:
 
    // сортировка узлов списка
    void TCList<T>::Sort(TNode<T> *ptrBegin, TNode<T> *ptrEnd, bool (*ptrFunc)(const T &, const T &));
 
private:
    TNode<T> *mPtrBegin;                                // указатель на первый узел
    TNode<T> *mPtrEnd;                                  // указатель на последний узел
    size_t mTotalNodes;                                 // количество узлов в списке
};
 
 
 
 
template<typename T>
void TCList<T>::Sort(TNode<T> *ptrBegin, TNode<T> *ptrEnd, bool (*ptrFunc)(const T &, const T &))
{
    TNode<T> *ptrTemp;
 
    for (TNode<T> *ptr1=mPtrBegin; ptr1->ptrNext!=NULL; ptr1=ptr1->ptrNext)
    {
        bool flag=false;
 
        for (TNode<T> *ptr2=mPtrBegin; ptr2!=NULL; ptr2=ptr2->ptrNext)
            if (!ptrFunc(ptr1->value, ptr2->value))
            {
                ptrTemp=ptr1;
                ptr1=ptr2;
                ptr2=ptrTemp;
 
                flag=true;
            }
 
        if (!flag) break;
    }
}


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    TCList<int>     listInt;
    
    listInt.PushBack(3);
    listInt.PushBack(1);
    listInt.PushBack(2);
    
    std::cout << "начальный список:     " << listInt << std::endl;
    listInt.Sort(listInt.GetBegin(), listInt.GetEnd(), IsMinToMax);
    std::cout << "сортированный список: " << listInt << std::endl;
 
    return 0;
}
Добавлено через 1 минуту
может поможете ее доделать, а то уже полдня с ней сижу


вот еще забыл функцию вывода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename T>
std::ostream &operator<<(std::ostream &out, const TCList<T> &list)
{
    TNode<T> *ptrCurrNode = list.mPtrBegin;
 
    while (ptrCurrNode != NULL)
    {
        out << ptrCurrNode->value << " ";
        ptrCurrNode = ptrCurrNode->ptrNext;
    }
 
    return out;
}
Добавлено через 9 минут
Цитата Сообщение от ITcrusader Посмотреть сообщение
Признаться, я не совсем понимаю, что ты хочешь, чтобы делало присваивание.
один уэел присвоить другому. это для того, чтобы два узла в списке поменять местами
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru