Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 23:03   #1
applegrub
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию Перегрузка оператора инкремента

Здравствуйте. Подстажите пожалуйста как мне сделать реализацию постфиксного оператора инкремента.

Вот мой код.

class CData : public CStudent
{
private:
int m_NumberBook;
public:
CData () {}
~CData (){}

CData & operator++();
};

CData & CData:perator++() {
m_NumberBook = m_NumberBook+5;
return *this;
}

void output() {
//вот здесь должно прибавиться +5, а прибавляется +1
m_NumberBook++;
printf("%d",m_NumberBook);
}

Большое спасибо))
applegrub вне форума Ответить с цитированием
Старый 20.12.2011, 23:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

покажите код пополнее.
с созданием обьекта(чтоб я видел типы переменных)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2011, 23:13   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от applegrub Посмотреть сообщение
Здравствуйте. Подстажите пожалуйста как мне сделать реализацию постфиксного оператора инкремента.

Вот мой код.

class CData : public CStudent
{
private:
int m_NumberBook;
public:
CData () {} //чему будит равно m_NumberBook после конструирования объекта?
~CData (){}

CData & operator++();
};

CData & CData:perator++() {
m_NumberBook = m_NumberBook+5;
return *this;
}

void output() {
//вот здесь должно прибавиться +5, а прибавляется +1

//к чему именно оно прибавляется?
//данная функция не является методом класса
//этот код вообще не должен скомпилироваться.
m_NumberBook++;
printf("%d",m_NumberBook);
}

Большое спасибо))
Ты свой код вообще проверял, нет?
_Bers вне форума Ответить с цитированием
Старый 20.12.2011, 23:16   #4
applegrub
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
покажите код пополнее.
с созданием обьекта(чтоб я видел типы переменных)
Посмотрите пожалуйста в исходниках

Последний раз редактировалось applegrub; 20.12.2011 в 23:18.
applegrub вне форума Ответить с цитированием
Старый 20.12.2011, 23:17   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

кстати, ТС, судя по стандарту вы перегрузили префиксный оператор ++.
постфиксный пишется так:
Код:
operator++(int)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2011, 23:21   #6
applegrub
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
кстати, ТС, судя по стандарту вы перегрузили префиксный оператор ++.
постфиксный пишется так:
Код:
operator++(int)
Спасибо большое))
applegrub вне форума Ответить с цитированием
Старый 20.12.2011, 23:25   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Посмотрите пожалуйста в исходниках
в вашем исходнике я не вижу что такое m_NumberBook, это должен быть CData поидее, тогда код не компилиться вообще.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2011, 23:32   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в вашем исходнике я не вижу что такое m_NumberBook, это должен быть CData поидее, тогда код не компилиться вообще.
Да у него одно из двух:

1. Либо output - метод класса, и тогда он внутри должен был заюзать operator++(int) , а не прибавлять 1 к самому данному члену.

2. Либо output - статическая функция. И тогда внутри должен фигурировать объект класса, а не его данный член.


Человек походу содрал откуда то кусок кода, и понятия не имеет что он делает, и как.
_Bers вне форума Ответить с цитированием
Старый 20.12.2011, 23:33   #9
applegrub
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в вашем исходнике я не вижу что такое m_NumberBook, это должен быть CData поидее, тогда код не компилиться вообще.
#include "CStudent.h"

class CData : public CStudent //объявлен класс CData, наследник класса CStudent
{
private:
//переменные
char *m_FullName; //Ф.И.О.
int m_NumberBook; //Номер зачетной книжки
int m_AverageScore; //Средний балл

m_NumberBook объявлена в классе CData.у меня код компилится
applegrub вне форума Ответить с цитированием
Старый 20.12.2011, 23:48   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас output это часть класса значит.

так к чему вы применяете инкремент то?
к объекту вашего класса, или же нет?

Код:
CData t;
t++;//если переопределили постфиксную форму
внимательнее будьте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Перегрузка оператора += и >> Jane-sad Помощь студентам 4 01.03.2013 15:38
перегрузка оператора + nesss Помощь студентам 0 01.11.2011 02:23
Перегрузка оператора + Jane-sad Помощь студентам 0 05.10.2010 13:52
С++ перегрузка оператора cati Помощь студентам 10 21.04.2010 23:38