Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как вот такое перегрузить, нужна помощь 
V
    Опции темы
Bart_Simpson
Дата 16.5.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



есть такой вот класс как мне перегрузить метод add оператором ++ а метод del оператором --

Код

class turn{                    //Очередь
private:
    int *data,*first;        //указатель на 1й элемент и матрица элементов очереди
    int current;            //индекс текущего элемента очереди
public:    
    turn(int);                //Конструктор с аргументами
    turn(const turn&);        //Копирующий конструктор
    ~turn();                    //Деструктор
    void add(int);            //Занесение в очередь
    void del(int cort);        //Вынесение из очереди
    int get();                //Показать очередь
  };

//Конструктор с аргументами
turn::turn(int number){
        current=0;                
        data=first=new int[number];
};
//Копирующий конструктор
turn::turn(const turn& t){
    current=t.current;
    data=new int[current];
      for(int i=0;i<current;i++){
        data[i]=t.data[i];
        first=data+(t.first-t.data);
    }
};
//Деструктор
turn::~turn(){
    delete []data;
};
//Добавить в очередь
void turn::add(int n){
    for(int i=(current-1);i>=0;i--)
        data[i+1]=data[i];
        data[0]=n;
        current=current+1;
        first=(first+1);
};
//Вынести элемент из очереди
void  turn::del(int cort){
        data[cort-1]=NULL;    
        current=current-1;
        first=(first-1);
};

//Вывести очередь
int turn::get(){
        current=current-1;
        first=first-1;
        return data[current];
};

void main(){

  int i=0;
  int count=0;
  int elements=0;
  cout <<"Intput number of elements\t";
  cin >> count;    
  turn T(count);
    for(i=0;i<count;i++){  
      cout << "Add to queue:";
      cin >> elements;
      T.add(elements);
    }
      T.del(count);
    for(i=1;i<count;i++){
      cout << T.get() << ' ';
  }        
  cout<<"\n1st element deleted"<<flush;
  _getch();
}

PM MAIL ICQ   Вверх
vinter
Дата 16.5.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



префикс или постфикс?

Добавлено через 1 минуту и 58 секунд
p.s никак не заметил что методы с параметрами..


--------------------
Мой блог
PM MAIL WWW   Вверх
Hurricane
Дата 16.5.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 6
Всего: 9



Унаследовать свой класс от turn, сделать методы add() и delete() закрытыми (private), написать операторы + и -, которые будут вызывать add() и delete() соответственно и возвращать ссылку на объект. Сделать деструктор виртуальным. Фсе. Сам напишешь?

Тьфу, просмотрел. Чего-чего ты перегружать собрался? ++ и --? Are you sure? Может, имелось ввиду + и -?


Это сообщение отредактировал(а) Hurricane - 16.5.2007, 16:28
PM MAIL   Вверх
Bart_Simpson
Дата 16.5.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Ваще решил перегружать ++ и -- постфикс!
PM MAIL ICQ   Вверх
vinter
Дата 16.5.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



нельзя, у этих операторов нет параметров которые ты бы мог передать.


--------------------
Мой блог
PM MAIL WWW   Вверх
Bart_Simpson
Дата 16.5.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Просто если заглянуть в main у меня методы add и del так вызываются что проще наверно (да и лучше сделать++и 
--).

P.S. мож  иподругому проще не могу точно сказать smile

Добавлено через 2 минуты и 19 секунд
ну можно и другие операторы (просто + и- )я не спорю я не знаю как пергружать операторы  smile 


vinter, предложи свои
PM MAIL ICQ   Вверх
Hurricane
Дата 16.5.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 6
Всего: 9



А какую смысловую нагрузку имеют ++ и -- применительно к контейнеру? Я бы еще понял "+" или "add()" как добавление элемента и "-" или "del()" как удаление элемента из контейнера, но инкремент и декремент... Это выше моего понимания.

Или просто очень хочется всандалить куда-нить ++ и --?
PM MAIL   Вверх
Bart_Simpson
Дата 16.5.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Да нет всё ладно проехали с ++ и --. Давайте попробуем сделать + и -. Я бы просто хотел посмотреть как это делается я в книге прочел нифига не понял вот думаю поможете.
PM MAIL ICQ   Вверх
vinter
Дата 16.5.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Код

classtype classtype::operator+(const int nVariable)
    {
        classtype object;
                        object.add(nVariable);
        return object;
    }


минус сделаешь по аналогии, хотя я бы оставил как было у тебя


--------------------
Мой блог
PM MAIL WWW   Вверх
Bart_Simpson
Дата 16.5.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Я б тоже так оставил но препод хочет что бы была перегрузка smile   smile


Это сообщение отредактировал(а) Bart_Simpson - 16.5.2007, 21:08
PM MAIL ICQ   Вверх
Bart_Simpson
Дата 16.5.2007, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Я написал вот так но када он выводит очередь там выводится фигня скорее всего адреса этих переменыых smile 

Код

turn turn::operator+(const int nVariable)
    {
        turn T(10);
        T.add(nVariable);
        return T;
    }

void main(){

  int i=0;
  int count=0;
  int elements=0;
  cout <<"Intput number of elements\t";
  cin >> count;    
  turn T(count);
    for(i=0;i<count;i++){  
      cout << "Add to queue:";
      cin >> elements;
        //T.add(elements);
          T+elements;
    }


Добавлено через 8 минут и 41 секунду
А если попробывать перегрузить не метод а полностью под перегрузку оператора написать обработку значения а не объекта! Как это будет выглядеть?
PM MAIL ICQ   Вверх
vinter
Дата 16.5.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



просто засунь код add в перегруженный оператор и чуть чуть пошамань, там поправит надо будет немного.


--------------------
Мой блог
PM MAIL WWW   Вверх
Hurricane
Дата 16.5.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 6
Всего: 9



У-у, как все запущено...  smile 

Код

turn& turn::operator+(const int nVariable)
{
    add(nVariable);
    return *this;
}


Это сообщение отредактировал(а) Hurricane - 16.5.2007, 21:55
PM MAIL   Вверх
vinter
Дата 16.5.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Hurricane, прав, что то я тупанул...


--------------------
Мой блог
PM MAIL WWW   Вверх
Bart_Simpson
Дата 16.5.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2007
Где: Днепр Украина

Репутация: нет
Всего: нет



Цитата(Hurricane @ 16.5.2007,  21:53)
У-у, как все запущено...  smile 

Код

turn& turn::operator+(const int nVariable)
{
    add(nVariable);
    return *this;
}

Пасибо за подсказку самому с книгой не разобрался бы!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.