Сообщение Re: static or singleton быть или не быть? И как быть? от 15.09.2016 23:42
Изменено 15.09.2016 23:46 antropolog
Здравствуйте, 0x00, Вы писали:
0>Доброго времени суток.
0>Возник вопрос по архитектуре, двоякая ситуация где можно использовать как singleton так и static.
0>Есть грубо говоря очередь рендера, наследовать\копировать как либо я не собираюсь и ограничиваюсь одним экземпляром.
1. очередь рендера -> RenderQueue
2. лучше неймспейс
0>Доброго времени суток.
0>Возник вопрос по архитектуре, двоякая ситуация где можно использовать как singleton так и static.
0>Есть грубо говоря очередь рендера, наследовать\копировать как либо я не собираюсь и ограничиваюсь одним экземпляром.
1. очередь рендера -> RenderQueue
2. лучше неймспейс
// RenderQueue.h
class IRender;
namespace RenderQueue {
void add(unsigned layer, IRender* object);
void remove(IRender* object);
};
// RenderQueue.cpp
#include "RenderQueue.h"
#include <vector>
namespace RenderQueue {
static std::vector<std::vector<IRender *>> render_objects;
void add(unsigned layer, IRender* object);
void remove(IRender* object);
};
Re: static or singleton быть или не быть? И как быть?
Здравствуйте, 0x00, Вы писали:
0>Доброго времени суток.
0>Возник вопрос по архитектуре, двоякая ситуация где можно использовать как singleton так и static.
0>Есть грубо говоря очередь рендера, наследовать\копировать как либо я не собираюсь и ограничиваюсь одним экземпляром.
1. очередь рендера -> RenderQueue
2. лучше неймспейс
0>Доброго времени суток.
0>Возник вопрос по архитектуре, двоякая ситуация где можно использовать как singleton так и static.
0>Есть грубо говоря очередь рендера, наследовать\копировать как либо я не собираюсь и ограничиваюсь одним экземпляром.
1. очередь рендера -> RenderQueue
2. лучше неймспейс
// RenderQueue.h
class IRender;
namespace RenderQueue {
void add(unsigned layer, IRender* object);
void remove(IRender* object);
};
// RenderQueue.cpp
#include "RenderQueue.h"
#include <vector>
namespace RenderQueue {
static std::vector<std::vector<IRender *>> render_objects;
void add(unsigned layer, IRender* object) {
// implementation
}
void remove(IRender* object) {
// implementation
}
};