Форум программистов, компьютерный форум, киберфорум
Наши страницы

Что такое композиция ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реверс слов в строке http://www.cyberforum.ru/cpp-beginners/thread166178.html
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(int argc, char *argv) { string str; //считывание строки
C++ Удалить из строки комментарии вида '/* ... */". Игнорировать вложенные комментарии. #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(int argc, char *argv) { string str; //считывание строки http://www.cyberforum.ru/cpp-beginners/thread166177.html
Заполнение массива числами из заданного интервала C++
Есть массив. Пользователь вводит два числа :минимальный элемент и максимальный.Как заполнить массив числами с этого интервала
C++ Перевернуть строки в файле
Здравствуйте, помогите пожалуйста с проблемой. Задача: Задан текстовый файл. Создать новый файл, в котором строки будут следовать в обратном порядке. У меня есть идея считывать строки и потом...
C++ Заполнение динамического массива случайными числами http://www.cyberforum.ru/cpp-beginners/thread166126.html
оч нужна помощь написать в консоли программу: динаммический массив размерностью 20 заполняется случайными числами
C++ Амперсанд перед именем функции Недавно столкнулся с таким представлением функции: double &re(void) Так и не понял, зачем ставится амперсанд перед именем. Адрес все равно функция не возвращает.. подробнее

Показать сообщение отдельно
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
17.01.2012, 13:26
Уважаемые форумчане прочитав Ваши мысли я понял что такое композиция. Это когда в классе создаются ещё классы ну вобщем вот примес сами смотрите....
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
 
class A
{
    private:
        class B
        {
            private:
                class C
                {
                    private:        
                        int i_a;
                        int i_b;
                    public:
                        C():i_a(0),i_b(0)
                        {}
                        C(int a,int b):i_a(a),i_b(b)
                        {}
                        void put(int a,int b)
                        {
                            i_a=a;
                            i_b=b;
                        }
                        void get(void)
                        {
                            std::cout<<i_a<<"\n"<<i_b<<std::endl;
                        }
                }C_class;
                double db_f;
                float f_s;
            public:
                B(void):db_f(0.0),f_s(0.0F)
                {}
                B(double da,float fb,int ia,int ib):db_f(da),f_s(fb)
                { C_class.put(ia,ib);}
                void put(double da,float fb,int ia,int ib)
                {
                    db_f=da;
                    f_s=fb;
                    C_class.put(ia,ib);
 
                }
                void get(void)
                {
                    std::cout<<db_f<<"\n"<<f_s<<std::endl;
                    C_class.get();
                }
        }B_class;
        
        enum{MAX=100};
        char ch_mas[MAX];
    public:
        A(void)
        {strcpy(ch_mas,"");}
        A(char* ch_pt,double d,float f,int ia, int ib)
        {
            strncpy(ch_mas,ch_pt,MAX);
            B_class.put(d,f,ia,ib);
        }
        void put(char* ch_pt,double d,float f,int ia, int ib)
        {   
            strncpy(ch_mas,ch_pt,MAX);
            B_class.put(d,f,ia,ib);
        }
        void get(void)
        {
            std::cout<<ch_mas<<"\n";
            B_class.get();
        }
};
 
int main(void)
{
    class A a("composition",1.12,7.22F,3,2);
//  a.B_class.C_class.put(); так нельзя так как класс С является закрытым полем и может исползоваться только\
    методами в нутни класса В
    a.get();
    system("pause");
return 0;
}
А вот ЭТО ВКЛЮЧЕНИЕ
Добавлено через 1 минуту
Цитата Сообщение от alex_x_x Посмотреть сообщение
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
class B{
public:
  virtual void sound() = 0;
};
 
class A{
public:
  A( B* b ) : m_b(b) {}
  void deleteFile(){ 
    // 
    m_b->sound();
    //
  }
private:
  B* m_b;
};
 
 
class Music : public B{
  void sound(){
    //something play
  }
};
 
int main(){
  A a( new Music() );
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru