одно из условий задачи было , использовать "Operator" и const спецификатор
ниже код, собствено модуль я исправил так чтобы компилятор не ругался, а вызвать из main функцию(ранее бывшую AddBegin) с оператором не удаётся, да и у Страуструпа как-то ненахожу должных примеров
list.h
#ifndef CLASS_LIST
#define CLASS_LIST
class List
{
public:
List(void);
~List(void);
List& List::operator = (const int&); // tut ran'she bylo viod AddBegin(int);
void AddEnd(int);
void Sort(void);
void Print(void);
int GetNumberOfNodes(void);
private:
List *Head, *Tail, *next, *prev;;
int numberOfNodes, value;
};
#endif
list.cpp
#include <iostream>
using namespace std;
#include "list.h"
List::List(void)
{
this->Head = 0;
this->Tail = 0;
this->numberOfNodes = 0;
};
List::~List(void)
{
List *currentPointer = this->Tail, *temporaryPointer;
while ( currentPointer != 0 )
{
temporaryPointer = currentPointer;
currentPointer = currentPointer->prev;
delete(temporaryPointer);
}
delete(this->Tail);
};
List& List::operator = (const int& value); // tut bylo void List::AddBegin(const int value)
{
if ( this->Head == 0 )
{
this->Head = new List;
(this->Head)->value = value;
(this->Head)->prev = 0;
(this->Head)->next = 0;
(this->Tail) = (this->Head);
}
else
{
List *temporaryPointer = this->Head;
this->Head = new List;
(this->Head)->prev = 0;
(this->Head)->value = value;
temporaryPointer->prev = Head;
Head->next = temporaryPointer;
}
(this->numberOfNodes)++;
};
void List::AddEnd(const int value)
{
if ( this->Head == 0 )
{
this->Head = new List;
(this->Head)->value = value;
(this->Head)->prev = 0;
(this->Head)->next = 0;
(this->Tail) = (this->Head);
}
else
{
List *temporaryPointer = this->Tail;
this->Tail = new List;
(this->Tail)->next = 0;
(this->Tail)->value = value;
temporaryPointer->next = Tail;
Tail->prev = temporaryPointer;
}
(this->numberOfNodes)++;
};
void List::Sort(void)
{
List *Iter;
int Temp, number1, number2, SwapFlag = 1;
if (this->Head)
while (SwapFlag)
{
Iter = this->Head;
SwapFlag = 0;
while (Iter->next)
{
number1 = Iter->next->value;
number2 = Iter->value;
if (number1 < number2)
{
Temp = Iter->next->value;
Iter->next->value = Iter->value;
Iter->value = Temp;
SwapFlag = 1;
}
Iter = Iter->next;
}
}
}
int List::GetNumberOfNodes(void)
{
return :: operator this->numberOfNodes;
}
void List::Print(void)
{
for (List *temporaryPointer = this->Head; temporaryPointer != 0; temporaryPointer = temporaryPointer->next)
cout << temporaryPointer->value << "\n";
cout << "\n";
};
Сообщение отредактировано: mansoff -