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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезагрузка оператора * в классе 
V
    Опции темы
Ak47black
  Дата 22.11.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Здравствуйте.
Подскажите пожалуйста кто-нибудь как правильно сделать перезагрузку двух местного оператора умножения в классе
Есть вот такой пробный код
main.cpp
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include "klase.h"
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
        Number sk1(), sk2();
        sk1 = sk1 * sk2;

        return 0;
}
//---------------------------------------------------------------------------


klase.h
Код

//---------------------------------------------------------------------------

#ifndef klaseH
#define klaseH

class Number
{
        private:
                float kint;
        public:
                Number(const int kint_){kint = kint_;};
                Number& operator*(float other)
                {
                        Number* sk= new Number(2);
                        return *sk;
                };
};

//---------------------------------------------------------------------------
#endif


При умножении классов
Код

sk1 = sk1 * sk2;// тут получаю ошибку
 
Цитата

[C++ Error] main.cpp(13): E2087 Illegal use of pointer

PM MAIL   Вверх
niXman
Дата 22.11.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Ak47black @  22.11.2009,  17:06 Найти цитируемый пост)
двух местного

это что? smile

Добавлено через 1 минуту и 25 секунд
Наверное имеется ввиду бинарный оператор?
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
zim22
Дата 22.11.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



добавь этот констуктор:не нужно его добавлять
Код

Number(float value) : kint(value) { }


нужно оператор преобразования определить
Код

operator float() { return kint; }


и измени функцию:
Код

 Number operator*(float other)
                {
                        Number sk(2);
                        return sk;
                };


Это сообщение отредактировал(а) zim22 - 22.11.2009, 19:48


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


Эксперт
****


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

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



Цитата

это что? smile

Ну не у меня просто задание такое  smile 
Опять наверно с крючком
Тоесть вот умножение классов
Код

sk1 = sk1 * sk2;

В принципе нельзя сделать?
PM MAIL   Вверх
zim22
Дата 22.11.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(Ak47black @  22.11.2009,  18:21 Найти цитируемый пост)
В принципе нельзя сделать?

можно
Код

Number operator*(const Number &rhs) {
  return Number(kint * rhs.kint);
}



--------------------
PM MAIL   Вверх
Ak47black
Дата 22.11.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

можно

А как тогда тут
Код

sk1 = sk1 * sk2;

?
PM MAIL   Вверх
zim22
Дата 22.11.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Код

class Number
{
        private:
                float kint;
        public:
                Number(const int kint_){kint = kint_;}
                
                Number operator*(const Number &rhs) {
                  return Number(kint * rhs.kint);
                }
};


int main()
{
     Number sk1(10), sk2(20);
    sk1 = sk1 * sk2;
       
  return 0;
}





--------------------
PM MAIL   Вверх
Ak47black
Дата 22.11.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А вот оказывается почему  smile 
Спасибо zim22, +
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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