23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
1

Сложение классов

19.11.2013, 14:03. Показов 2501. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть некоторые классы
C++
1
2
3
4
5
6
7
class A {/*...*/};
class B{/*...*/};
class C
{
    A a;
    B b;
};
Как перегрузить +, чтобы следующая запись была верна? Моя фантазия, видимо, иссякла.
C++
1
2
A a; B b; C c;
c = a + b;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2013, 14:03
Ответы с готовыми решениями:

Сложение объектов базового и наследуемых классов через виртуальную функцию
Нужно определить базовый класс с виртуальной функцией сложения. Кроме того перегрузка этой же...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение,...

На основе указанных классов создать набор классов с использованием множественного наследования
Создать базовый класс «Транспорт» и производные от него классы «Автомобиль», «Поезд», «Самолет»....

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

11
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
19.11.2013, 15:11 2
Тут надо чтоб класс был один и тот же:
C++
1
class A{.....};
,
C++
1
2
3
4
5
6
7
8
int main()
{
   A a1;
   A a2;
   A a3;
   a3 = a1 + a2;
 
}
я конечно тоже не гуру, но для перегруженного оператора так должно быть
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.11.2013, 15:26 3
Если просто хочется, чтобы запись c = a + b; "съедалась" компилятором, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class B;
class C;
 
class A 
{
public:
    C operator+ (const B&);
};
class B {/*...*/};
class C
{
    A a;
    B b;
};
 
C A::operator+ (const B&)
{
    return C();
}
 
int main() {
    
   A a;
   B b;
   C c;
   c = a + b;
   return 0;
}
0
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
19.11.2013, 16:16  [ТС] 4
Tulosba, у меня с десяток ошибок при такой записи, хотя "ничего и не подчеркивает".

Может я неправильно понимаю что мне нужно, но задача в том, что есть некоторые классы, являющиеся компонентами другого.... кхм.. в общем есть корпус, грифель, ластик и карандаш, как все вышеупомянутое вместе. В программе должна корректно работать запись: Карандаш = корпус + грифель + ластик.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.11.2013, 16:26 5
Цитата Сообщение от Сонца Посмотреть сообщение
у меня с десяток ошибок при такой записи
Ошибок нет. http://ideone.com/T8pjTD
Цитата Сообщение от Сонца Посмотреть сообщение
Карандаш = корпус + грифель + ластик.
Тут, мне кажется, должно быть что-то типа "множества". Т.е. "карандаш" есть множество, состоящее из объектов "корпус", "грифель", "ластик". Соответственно операция сложения объектов должна давать множество.
Имхо, мне отсюда кажется так
0
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
19.11.2013, 17:04  [ТС] 6
Цитата Сообщение от Tulosba Посмотреть сообщение
Ошибок нет.
Я проверяла на своем примере, так что может я что-то не учла за гранью примера.
Что такое множество я пока не знаю

Благодарю за внимание.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
19.11.2013, 17:06 7
Для этого придумали конструктор и композицию.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.11.2013, 17:18 8
Цитата Сообщение от Сонца Посмотреть сообщение
Что такое множество я пока не знаю
Это математический термин.
0
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
19.11.2013, 17:28  [ТС] 9
Цитата Сообщение от stima Посмотреть сообщение
Для этого придумали конструктор и композицию.
Обо всем и ни о чем.
Я тоже много красивых слов знаю и если бы могла решить задачу, не писала бы здесь.
Иногда, однако, стоит помнить, что по ту сторону монитора сидит человек без ваших знаний и навыков, а значит выражать мысли нужно подробнее двух слов. Или же не выражать вовсе, если лень.

Добавлено через 6 минут
Цитата Сообщение от Tulosba Посмотреть сообщение
Это математический термин.
я не представляю какая у него будет "отличительная особенность как программного кода или как его организовать
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
19.11.2013, 17:30 10
Вы не знаете, что такое конструктор и собрались складывать N Обьектов? Если вы не знаете, что такое композиция, то запрос в гугл "c++ композиция" намного короче чем Ваше высказывание.
0
Tulosba
19.11.2013, 17:42
  #11

Не по теме:

Цитата Сообщение от Сонца Посмотреть сообщение
Или же не выражать вовсе, если лень.
Никто тут не имеет понятия о Вашем уровне знаний. Поэтому и разжевывать всё до символов Вам никто не будет. По-крайней мере сразу, пока не прояснится ситуация с Вашей базовой подготовкой. А некоторые ответы, например, что такое конструктор, правильнее почерпнуть из книг, или, на крайний случай, статей в интернете. Вместо того, чтобы спрашивать об этом на форуме.

0
Модератор
Эксперт С++
13491 / 10747 / 6405
Регистрация: 18.12.2011
Сообщений: 28,681
19.11.2013, 18:55 12
Предлагаю интересный пример с применением перечисления:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
enum kansnames{pen,lastic,grifel,karandash};
class Kans 
{
 
protected:
    kansnames kn;
public:
    Kans(kansnames k=pen)
    {
        kn=k;
    }
    Kans operator+(const Kans &x)
    {
        kansnames t=kansnames(kn+x.kn);
        return t;
    }
    
 };
 
int main()
{
    Kans Pen(pen),Lastic(lastic),Grifel(grifel),D;
    D=Pen+Lastic+Grifel;
}
0
19.11.2013, 18:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2013, 18:55
Помогаю со студенческими работами здесь

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов)
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как...

Объекты классов не видны во вложенной функции одной из классов
Такая вот проблема. Есть функция play() класса Game, где создаются объекты классов Game, Character,...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по...

Преобразования объектов классов в объекты других классов
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары...

Реализация классов-наследников или классов-родителей
Не могу переделать функционал программы таким образом, чтобы у появились классы-наследники, или...

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru