Форум программистов, компьютерный форум CyberForum.ru

class выводящий эллементы другого класса... - C++

Восстановить пароль Регистрация
 
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
30.10.2011, 21:41     class выводящий эллементы другого класса... #1
Сделать класс GROUP_OBJECT который будит выводить эллементы других классов на экран...
помогите доделать один класс...

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
 
class ELLEMENTS{ // Базовый класс...
 
protected:
 
    int x;
    int y;
    char color[50];
    vector <ELLEMENTS *> child;
 
public:
 
    ELLEMENTS(int xx, int yy, char *s){
        Set_X(xx);
        Set_Y(yy);
        Set_Color(s);
    }
 
    virtual ~ELLEMENTS(){}
 
    int Get_X(){ return x; }
    int Get_Y(){ return y; }
    char *Get_Color(){ return color; }
 
    void Set_X(int xx){ x=xx; }
    void Set_Y(int yy){ y=yy; }
    void Set_Color(char *s){ strcpy(color,s); }
 
    void Add_Child(ELLEMENTS *p){ // Добавить ребёнка...
        child.push_back(p);
    }
 
    void Remove_Child(){ // Удалить ребёнка...
        child.pop_back();
    }
 
    virtual void Draw()=0; // У каждого своё имя...
 
 
 
};
 
class CIRCLE: public ELLEMENTS{ // Круг...
 
protected:
 
    int radius;
 
public:
 
    CIRCLE(int xx, int yy, char *s,int rad):ELLEMENTS(xx,yy,s){
        Set_Radius(rad);
    }
 
    ~CIRCLE(){}
 
    int Get_Radius(){ return radius; }
 
    void Set_Radius(int rad){ radius=rad; }
 
    void Draw(){ cout<<"Я есть круг!\n"; }
 
};
 
class RECTANGLE: public ELLEMENTS{ // Прямоугольник...
 
protected:
 
    int a;
    int b;
 
public:
 
    RECTANGLE(int xx, int yy, char *s, int aa, int bb):ELLEMENTS(xx,yy,s){
        Set_A(aa);
        Set_B(bb);
    }
 
    ~RECTANGLE(){}
 
    int Get_A(){ return a; }
    int Get_B(){ return b; }
 
    void Set_A(int aa){ a=aa; }
    void Set_B(int bb){ b=bb; }
 
    void Draw(){ cout<<"Я есть прямоугольник!\n"; }
 
};
 
class TRIANGLE: public ELLEMENTS{ // Треугольник...
 
protected:
 
    int a;
    int b;
    int c;
 
public:
 
    TRIANGLE(int xx, int yy, char *s, int aa, int bb, int cc):ELLEMENTS(xx,yy,s){
        Set_A(aa);
        Set_B(bb);
        Set_C(cc);
    }
 
    ~TRIANGLE(){}
 
    int Get_A(){ return a; }
    int Get_B(){ return b; }
    int Get_C(){ return c; }
 
    void Set_A(int aa){ a=aa; }
    void Set_B(int bb){ b=bb; }
    void Set_C(int cc){ c=cc; }
 
    void Draw(){ cout<<"Я есть треугольник!\n"; }
 
};
 
[COLOR="Red"]class GROUP_OBJECT: public ELLEMENTS{ // Выводит все эллементы на экран...
 
public:
 
    void Draw_Childs(){ // Показать детей...
 
        vector<ELLEMENTS*>::iterator i;
 
        for(i=child.begin();i!=child.end();i++){
            Draw();
        }
 
    }
 
};[/COLOR]
main.cpp

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
#include "All.h"
 
int main()
{
 
    CIRCLE a(10,20,"black",1);
    a.Add_Child(new CIRCLE(1,2,"s",3));
    a.Add_Child(new CIRCLE(1,4,"q",5));
    a.Add_Child(new CIRCLE(1,5,"x",4));
    a.Add_Child(new CIRCLE(1,8,"n",1));
 
    RECTANGLE b(50,60,"neon",1,2);
    b.Add_Child(new RECTANGLE(1,2,"c",45,56));
    b.Add_Child(new RECTANGLE(1,3,"co",45,56));
 
   [COLOR="red"] GROUP_OBJECT *p; 
 
    p=&a;
 
    p->Draw_Childs();
[/COLOR]
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 21:41     class выводящий эллементы другого класса...
Посмотрите здесь:

C++ Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
объявление объекта одного класса в описании другого класса C++
C++ Ошибка компиляции (преобразование объекта класса в объект другого класса)
C++ Инициализация объектов класса в конструкторе другого класса
Как получить private переменную класса, функцей членом другого класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 02:34     class выводящий эллементы другого класса... #2
C++
1
2
3
for(i=child.begin();i!=child.end();i++){
            Draw();
        }
Почему так?

Так мб?
C++
1
2
3
for(i=child.begin();i!=child.end();i++){
            (*i)->Draw();
        }
Добавлено через 15 минут
Upd:
Плюс приведение типов забыли:
C++
1
p=( GROUP_OBJECT *)&a;
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.10.2011, 03:18     class выводящий эллементы другого класса... #3
что-то не вижу ни одного delete
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 03:27     class выводящий эллементы другого класса... #4
Цитата Сообщение от Jupiter Посмотреть сообщение
что-то не вижу ни одного delete
Так там ничего динамично и не создаётся =\
Bers
Заблокирован
31.10.2011, 03:50     class выводящий эллементы другого класса... #5
Цитата Сообщение от TwiX Посмотреть сообщение
Так там ничего динамично и не создаётся =\
Вам данная запись ни о чем не намекает?

Цитата Сообщение от OLLEGATOR Посмотреть сообщение
a.Add_Child(new CIRCLE(1,4,"q",5));
Добавлено через 1 минуту
OLLEGATOR, объясните мне одну вещь: Где у вас в коде происходит освобождения захваченной памяти?

Утечки памяти вас не смущают?

Добавлено через 7 минут
Вопрос: какую роль выполняет класс "группа объектов" в архитектуре?
И почему в вашем случае она является потомком ELLEMENTS ?



C++
1
2
3
4
5
6
7
8
9
10
11
class GROUP_OBJECT: public ELLEMENTS{ // Выводит все эллементы на экран...
public:
void Draw_Childs() // Показать детей...
{ 
      vector<ELLEMENTS*>::iterator i;
      for(i=child.begin();i!=child.end();i++)
      {
           (*i)->Draw(); //подправил
      }
 
};
Добавлено через 6 минут
если допустим, роль группы элементов - хранение и менеджмент группы объектов, то почему всякие
CIRCLE так же могут хранить группы разных объектов?

Возможно у вас путаница в ролях классов. Кто что должен, и за что отвечает.
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 03:57     class выводящий эллементы другого класса... #6
Извиняюсь... Не заметил "new"
всякие
CIRCLE так же могут хранить группы разных объектов?
это меня тоже сильно смутило
Yandex
Объявления
31.10.2011, 03:57     class выводящий эллементы другого класса...
Ответ Создать тему
Опции темы

Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru