|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.03.2011, 14:01 | #1 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 51
|
Дружиские функци и перегрузка операторов
class CMyStack
{ public: CMyStack(); ~CMyStack(); void Push(int d); int Pop(); bool isEmpty(); void Print(); private: struct Node { int d; Node *p; }; Node *top; }; CMyStack::CMyStack():top(NULL) { } void CMyStack::Push(int d) { Node *pv = new Node; pv->d = d; pv->p = top; top = pv; } int CMyStack::Pop() { if (isEmpty()) { return -1; } int temp = top->d; Node *pv = top; top = top->p; delete pv; return temp; } bool CMyStack::isEmpty() { return top ? false : true; } void CMyStack::Print() { while (top) { std::cout << Pop() << ' '; } std::cout << std::endl; } CMyStack::~CMyStack() { while (top) { Node *pv = top; top = top->p; delete pv; } } тут осталось то что я не пойму как это сделать Перегруженные операции: + добавление элемента; - удаление элемента; [] индексирование; = копирование; == отношение равенства; > отношение порядка; << вывод значения контейнера в стандартный поток вывода Объявление и реализация дружественной функции. помагите пожалуста очень надо не это надо здать чрез 5дней. на работе полный завал я работаю в милиции. и учусь на заочном на програмиста помагите пожалуйста очень надо. выручите ребята |
16.03.2011, 17:38 | #2 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Друзья класса... Это делается для того, чтобы организовать более гибкую систему безопасности. Используйте friend перед нужной функцией классом, переменнои т.д. для того, чтобы разрешить использование метода класса извне этого класса. Вот здесь более подробно и понятно http://www.cyberguru.ru/programming/...y2-page21.html Перегруженные операции http://chg.fatal.ru/misc/prog-cpp/prog_109.html Я так понял ваш вопрос.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
17.03.2011, 07:54 | #3 | |
Пользователь
Регистрация: 17.01.2011
Сообщений: 51
|
Цитата:
Та я понял когда пишу дружеские функции и перегружаю операторы компилятор выдает ощибку. Если не сложно можеш сделать а то у меня сейчас на роботе завал времени нету. |
|
17.03.2011, 16:28 | #4 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
Код:
CMyStack:perator + - перегрузка оператора + для добавления элемента все компилится у меня |
18.03.2011, 11:18 | #5 | |
Пользователь
Регистрация: 17.01.2011
Сообщений: 51
|
Цитата:
|
|
19.03.2011, 10:22 | #6 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
Другие по аналогии, оператор это простая функция берущая аргументы и что то возвращающая
if (variable == 1) в этом случае == это у variable оператор - принимает число и возвращает bool если врубишся поймешь как сделать остальное, единственное с индексированием не оч понятно так как индекса по сути нету, можно по связанному списку переходить просто нужное количество раз = индексу + 1 и возвращать этот элемент конструктор копирования это конструктор вида CMyStack::CMyStack(CMyStack ©From) { // копируешь данные из copyFrom в *this } у тебя же тут вместо него перегрузить просто оператор = надо, тоесть создаешь новый объект копируешь данные текущего в новый и возвращаешь его Последний раз редактировалось UltimaBeaR; 19.03.2011 в 10:25. |
19.03.2011, 18:53 | #7 | |
Пользователь
Регистрация: 17.01.2011
Сообщений: 51
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операторов | _-Re@l-_ | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 20.11.2010 13:23 |
Перегрузка операторов в С++ | Purr | Помощь студентам | 0 | 09.10.2010 15:12 |
перегрузка операторов | mashuta_ya | Общие вопросы C/C++ | 0 | 01.10.2010 18:54 |
Перегрузка операторов (С++) | Перчитель | Помощь студентам | 1 | 03.12.2008 18:46 |
Перегрузка операторов, Организация перегрузки операторов | chagin_yav | Помощь студентам | 2 | 12.05.2008 09:15 |