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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объект в качестве аргумента функции 
:(
    Опции темы
Christoph
Дата 15.2.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



func какое значение должно вернуть? объект?
и еще объект temp внутри func он уничтожается, после выполнения метода func?


--------------------
user posted image
PM MAIL ICQ   Вверх
Syltan
Дата 15.2.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



Да, функция должна вернуть объект. Да уничтожается.
PM MAIL   Вверх
RatHat
Дата 15.2.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



Так, у меня возникли новые глупые вопросы smile
Вот один из них: ты хочешь сложить два члена одного объекта и поместить результат в объект,  а потом вернуть именно объект, или ты всё-таки в самом начале хотел сложить именно два объекта ?smile

Прям детектив какой-то...а потом окажется, что всех убил садовник, а мы все тут советовали совсем не то, что тебе надо.
Грамотное ТЗ в студию!
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
Syltan
Дата 15.2.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



В методе, я хочу сложить 2 объекта, и возвращать этот метод должен объект.
А через другой метод гет, я хочу вывести результат, сложенных этих 2-ух объектов.
PM MAIL   Вверх
RatHat
Дата 15.2.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



Именно два объекта? 
Тогда тебе прямая дорога перегружать оператор "+".
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
Syltan
Дата 15.2.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



Там в книге приводился пример без использования operator+, просто там в примере с объектами он не используется.
Хорошо, как должен выглядеть данная программа с оператором +, просто он меня немного пугает, или хотя б подскажите , как мой код исправить, без его использования.

Это сообщение отредактировал(а) Syltan - 15.2.2010, 20:40
PM MAIL   Вверх
bsa
Дата 15.2.2010, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Syltan, ты этого хотел?
Код
Ala Ala::func(Ala yra)
{
    yra.x += 25;
    yra.y += 35.0;
    return yra;
}

PM   Вверх
Syltan
Дата 15.2.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



Если прописать этот код, тогода не будет работать вот это:

Код

cout<<"Результат = "<<func(yra);

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
class Ala
{
...
   friend std::ostream& operator<<(std::ostream &stream, const Ala &a) {
       return stream << a.x << ',' << a.y;
   }
};

Syltan, если честно, очень сложно понять, что именно ты хочешь получить. Потому что в исходном коде у тебя одно, а требования к работе другие.
PM   Вверх
Syltan
Дата 15.2.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



Эта программа у меня тренировочная. Я просто хотел научится создавать методы, которые возвращают объект, научится их применять в коде, а также хотел научится суммрировать объекты и получать ихний результат. ПОэтому и создал вот эту программку, но она  меня не скомпилилась.  

Так как сделать хоть 1 рабочий код?

Это сообщение отредактировал(а) Syltan - 15.2.2010, 22:12
PM MAIL   Вверх
bsa
Дата 15.2.2010, 22:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Syltan @  15.2.2010,  21:46 Найти цитируемый пост)
Так как сделать хоть 1 рабочий код?
РУКАМИ!
Код
class MyClass
{
   MyClass method() { return *this; }
};

int main()
{
   MyClass x;
   MyClass y = x.method();
   return 0;
}

PM   Вверх
RatHat
Дата 15.2.2010, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


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

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



bsa, он хотел два объекта сложить вроде...
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
Dikey
Дата 16.2.2010, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

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



Нужно я так понимаю объект возвратить, а temp.x это значение переменной x типа int объекта temp.
Нужно возвращать обьект.Странные конструкторы, еще с такими не сталкивался.

Код

Ala Ala::func(Ala yra)
{
    Ala temp;
    temp.x = 25;
    temp.y = 35.0;
yra.x += (temp.x + temp.y);
return yra;


это я по поводу вышеописанного кода

я б объекты сложил так бы:
Код


Ala Ala::operator+(const Ala &yra){
           Ala new_ala;
           new_ala.x=x+yra.x;
           new_ala.y=y+yra.y;
   return new_ala;
}


Это сообщение отредактировал(а) Dikey - 16.2.2010, 01:44
PM MAIL WWW ICQ Skype   Вверх
Syltan
Дата 18.2.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -2



Код

я б объекты сложил так бы:


Подскажите, как сделать хоть одно что-то рабочее в целом, если сделать так как вы сказали, вот так:
Код

#include <iostream>
using namespace std;

class Ala{
private: int x; float y;
public: Ala():x(0), y(0) { }
        Ala(int z1, float z2):x(z1),y(z2) {}
        Ala func(Ala yra);
        void get();
};

Ala Ala::operator+(const Ala &yra){
           Ala new_ala;
           new_ala.x=x+yra.x;
           new_ala.y=y+yra.y;
   return new_ala;
}

void Ala::get()
{
    cout<<"Результат = "<<func(yra);
}
int main()
{
    Ala e1, e2;
    Ala f(54,22.3);
    e1 = e2.func(f);
    e1.get();
    cin.get();
}



Не компилится код.

c:\documents and settings\kasper\мои документы\visual studio 2008\projects\proba\proba\proba.cpp(12) : error C2039: '+' : is not a member of 'Ala'

PM MAIL   Вверх
bsa
Дата 18.2.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Syltan, в объявлении класса Ala нет operator+. Т.е. ты реализуешь оператор, которого нет.

Добавь 
Код
Ala operator+(const Ala &yra) const;
в объявление класса (сразу после строки void get();), а так же добавь const перед фигурной скобкой в строке 12.
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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