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

Взаимодействие объектов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Если в списке идут подряд несколько четных элементов, то блоки подряд идущих четных заменить одним элементом, равным сумме этих четных http://www.cyberforum.ru/cpp-beginners/thread1122999.html
Вот структура: typedef struct SNum{ int num; /* поле для числа */ SNum * next; /* дополнительное поле-указатель, которое будет содержать адрес следующего элемента списка */ SNum * prev; /* дополнительное поле-указатель, которое будет...
C++ Описание функции toascii Здравствуйте. У меня имеются вопросы по следующему фрагменту программы: while((m=fgetc(fin))!=EOF) {m=toascii(m); if((m>=65) && (m<=90)) k++; if((m>=192) && (m<=223)) k++; if(m==168) k++; } for(i=0;i<N;i++) if(k!=0) fprintf(flip,"%c - %d \n",i,k); http://www.cyberforum.ru/cpp-beginners/thread1122982.html
Сложение массивов из разных объектов класса C++
Я объявил в классе массив a и ввёл два объекта класса. Как сложить массив a разных объектов класса?
C++ Объясните, что обозначает "->"
В общем довольно глупый вопрос. В связных списках(и не только) часто используют это: -> Объясните, что это обозначает(что делает).
C++ Поиск самой длинной строки в const char** http://www.cyberforum.ru/cpp-beginners/thread1122924.html
Здравствуйте. Вот функция: template <> char* maxn<char*>(char** const ar, const int* limit) { int curmax = 0, absmax = 0, max_ind = 0, count = 0; for (int i = 0; (i < *limit), (count = 0); ++i) { while (ar) ++count; cout << count; //почему не выполняется ???____ if (count > curmax && count > absmax) { // здесь проверка на текущее максимальное в паре и абсолютное
C++ Можно ли определить const без ее инициализации и почему? 1.можно ли определить const без ее инициализации и почему?? 2. почему без знаковые типы данных допускают увеличение диапозона предстовляемых или положительных значений??. в инете не нашел ответов подробнее

Показать сообщение отдельно
Koncord
5 / 5 / 1
Регистрация: 27.09.2012
Сообщений: 65
18.03.2014, 17:31     Взаимодействие объектов
При написании менеджера объектов для движка столкнулся с проблемой взаимодействия объектов между собой. Например есть классы Player и Enemy, которые наследуют BaseObject. Как объекту pl узнать о существовании всех объектов Enemy с возможностью записи в них? Пытался использовать shared_ptr но чувствую что не то.
О великие гуру, наставьте на путь истинный .
BaseObject
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
/**
 * \file    src\BaseObject.h
 *
 * \brief   Declares the base object class.
 */
 
/**
 * \class   BaseObject
 *
 * \brief   A base object.
 *
 * \author  Koncord
 * \date    14.03.2014
 */
 
class BaseObject
{
public:
 
    /**
     * \fn  virtual void BaseObject::OnInit() = 0;
     *
     * \brief   Событие инициализации объекта
     *
     * \author  Koncord
     * \date    14.03.2014
     */
 
    virtual void OnInit() = 0;
 
    /**
     * \fn  virtual void BaseObject::OnEvent() = 0;
     *
     * \brief    Событие взаимодействия с периферией
     *
     * \author  Koncord
     * \date    14.03.2014
     */
 
    virtual void OnEvent() = 0;
 
    /**
     * \fn  virtual void BaseObject::OnStep() = 0;
     *
     * \brief   Событие перед отрисовкой.
     *
     * \author  Koncord
     * \date    14.03.2014
     */
 
    virtual void OnStep() = 0;
 
    /**
     * \fn  virtual void BaseObject::OnRender() = 0;
     *
     * \brief   Событие отрисовки.
     *
     * \author  Koncord
     * \date    14.03.2014
     */
 
    virtual void OnRender() = 0;
 
    /**
     * \fn  virtual void BaseObject::OnQuit() = 0;
     *
     * \brief   Событие завершения работы программы.
     *
     * \author  Koncord
     * \date    14.03.2014
     */
 
    virtual void OnQuit() = 0;
};

Код
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
#include <boost\shared_ptr.hpp>
struct Rect
{
    int x,y,w,h;
}
class Player: public BaseObject
{
    public:
        void OnInit();
        void OnEvent();
        void OnStep() {}
        void OnRender() {}
        void OnQuit() {}
        Rect BBox;
        boost::shared_ptr<class Enemy> enemy;
};
 
class Enemy: public BaseObject
{
    public:
        void OnInit();
        void OnEvent(){};
        void OnStep() {}
        void OnRender() {}
        void OnQuit() {}
        Rect BBox;
};
 
void Player::OnInit()
{
    BBox.h = 32;
    BBox.w = 32;
    BBox.x = 0;
    BBox.y = 0;
}
void Enemy::OnInit()
{
    BBox.h = 32;
    BBox.w = 32;
    BBox.x = 32;
    BBox.y = 32;
}
void Player::OnEvent()
{
    fprintf(stdout, "%d", enemy->BBox.w); // как тут получить BBox всех Enemy??
}
 
 
int main(int argc, char *argv[])
{
    Player pl;
    pl.OnInit();
    pl.OnEvent();
    Enemy en;
    en.OnInit();
    Enemy en2;
    en2.OnInit();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru