Опять же имеется класс (двунаправленный кольцевой список):
читать дальшеclass cRingList {
private:
cNode1* first;
cNode1* last;
cNode1* cur;
public:
cRingList();
bool IsEmpty();
void AddRight(int);
void AddLeft(int);
void DeleteLast();
void DeleteFirst();
int Size();
void GoNext();
void GoPrev();
void GoFirst();
void GoLast();
bool IsFirst();
bool IsLast();
void DelElem(int num);
int GetData();
void SetData(int);
void AddAfterNum(int num, int data);
~cRingList();
};
Описание класса:
читать дальшеcRingList::cRingList() {
first = NULL;
last = NULL;
cur = NULL;
std::cout << "Constructor" << std::endl;
}
bool cRingList::IsEmpty () {
return (first == NULL);
}
void cRingList::AddRight (int val) {
cNode1* tmp;
tmp = new cNode1 ();
tmp->SetData(val);
if (IsEmpty()) {
first=tmp;
last=tmp;
first->SetNext(last);
last->SetNext(first);
last->SetPrev (first);
first->SetPrev (last);
cur = first;
}
else {
tmp->SetNext(first);
tmp->SetPrev(last);
last->SetNext(tmp);
first->SetPrev(tmp);
last = tmp;
}
}
void cRingList::AddLeft(int val) {
cNode1* tmp;
tmp = new cNode1 ();
tmp->SetData (val);
if (IsEmpty()) {
first=tmp;
last=tmp;
first->SetNext (last);
last->SetNext (first);
last->SetPrev (first);
first->SetPrev (last);
cur = first;
}
else {
tmp->SetNext(first);
tmp->SetPrev(last);
last->SetNext(tmp);
first->SetPrev(tmp);
first=tmp;
}
}
void cRingList:eleteLast() {
if (!IsEmpty()) {
if (Size() == 1) {
delete (last);
last = NULL;
first = NULL;
cur = NULL;
} else {
cur = last->GetPrev();
cur->SetNext (first);
first->SetPrev (cur);
delete (last);
last = cur;
}
}
}
void cRingList:eleteFirst() {
if (!IsEmpty()) {
if (Size() == 1) {
delete (first);
first = NULL;
last = NULL;
cur = NULL;
} else {
cur=first->GetNext();
last->SetNext(cur);
cur->SetPrev(last);
delete (first);
first = cur;
}
}
void cRingList::GoNext(){
cur = cur->GetNext();
}
void cRingList::GoPrev() {
cur = cur->GetPrev();
}
void cRingList::GoFirst() {
cur = first;
}
void cRingList::GoLast() {
cur = last;
}
bool cRingList::IsFirst() {
return (cur==first);
}
bool cRingList:: IsLast() {
return (cur == last);
}
int cRingList::Size() {
if (IsEmpty()) return 0;
else {
GoFirst();
int i=1;
while (!IsLast()) {
cur->GoNext();
i++;
}
return i;
}
}
void cRingList:elElem(int num) {
if (num > 0) {
if ((!IsEmpty()) && (Size() >= num)) {
if (Size() == 1) {
delete (first);
cur = NULL;
first = NULL;
last = NULL;
} else {
GoFirst();
int i=1;
while (i < num) {
GoNext();
i++;
}
(cur->GetNext())->SetPrev(cur->GetPrev());
(cur->GetPrev())->SetNext(cur->GetNext());
delete (cur);
GoFirst();
}
}
}
}
int cRingList::GetData() {
if (cur != NULL) return (cur->GetData());
}
void cRingList::SetData(int data) {
if (cur != NULL) cur->SetData (data);
}
void cRingList::AddAfterNum(int num, int data) {
if ((!IsEmpty ()) && (Size () >= num)) {
if (num == 0) AddLeft(data);
else {
if (num == Size ()) AddRight(data);
else {
GoFirst();
int i = 1;
while (i != num) {
GoNext();
i++;
}
cNode1* tmp;
tmp = new cNode1 ();
tmp->SetData (val);
tmp->SetNext (cur->GetNext);
tmp->SetPrev (cur);
(cur->GetNext())->SetPrev(tmp);
cur->SetNext (tmp);
}
}
}
}
cRingList::~cRingList() {
std::cout << "Destructor";
}
Ошибка: error C2601: 'GoFirst' : local function definitions are illegal
Идентичные ошибки выводятся для GoPrev, GoLast, IsFirst, IsLast, DelElem, GetData, SetData, Size, AddAfterNum.
UPD. Проблема была в том. что в описании ф-ции DeleteFirst() нехватало одной закрывающей фигурной скобки. Вопрос закрыт =)
Продолжаю пытаться понять компилятор
Опять же имеется класс (двунаправленный кольцевой список):
читать дальше
Описание класса:
читать дальше
Ошибка: error C2601: 'GoFirst' : local function definitions are illegal
Идентичные ошибки выводятся для GoPrev, GoLast, IsFirst, IsLast, DelElem, GetData, SetData, Size, AddAfterNum.
UPD. Проблема была в том. что в описании ф-ции DeleteFirst() нехватало одной закрывающей фигурной скобки. Вопрос закрыт =)
читать дальше
Описание класса:
читать дальше
Ошибка: error C2601: 'GoFirst' : local function definitions are illegal
Идентичные ошибки выводятся для GoPrev, GoLast, IsFirst, IsLast, DelElem, GetData, SetData, Size, AddAfterNum.
UPD. Проблема была в том. что в описании ф-ции DeleteFirst() нехватало одной закрывающей фигурной скобки. Вопрос закрыт =)