IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> C++ работа с класами, описание функции через "operator", проблемы с вызовом функций
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


нужна помощь по работе с классами ,
одно из условий задачи было , использовать "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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Во-первых, какой у тебя компилятор?

Во-вторых, программу надо чуть-чуть подкорректировать, потому что есть синтаксические ошибки. И в третьих - покажи, как ты пытаешься вызвать operator =?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Цитата(volvo @ 26.05.2007 15:38) *

Во-первых, какой у тебя компилятор?

Во-вторых, программу надо чуть-чуть подкорректировать, потому что есть синтаксические ошибки. И в третьих - покажи, как ты пытаешься вызвать operator =?

компилятор g++ от Dev-cpp 4.9.9.2 ,

вызывал примерно так


List *myList = new List;
int value;
...
cin >> value;
myList->List(value);
...


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Попробовал в Turbo C++ сделать так:

int main() {

int value;
List *my_list = new List();

do {
cin >> value;
if(value) *my_list = value;
} while(value);

my_list -> Print();

return 0;
}

- все отработало... Могу протестить в MinGW (GCC), если надо...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


лог из cmd

g++ -c 3.cpp -o 3.o
g++ -c list.cpp -o list.o
list.cpp:27: error: declaration of `List& List::operator=(const int&)' outside o
f class is not definition
list.cpp:28: error: expected unqualified-id before '{' token
list.cpp:28: error: expected `,' or `;' before '{' token
make: *** [list.o] Error 1

ой , извиняюсь, точка с запятой после функции лишняя =))
всем спасибО!))

Сообщение отредактировано: mansoff -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 13:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name