我有在我的遊戲明星級的,我希望他們使用質地所以我想出了這個代碼一樣...使用靜態指針到類的內存管理?
sf::Texture* Star::starTexture = NULL;
unsigned int Star::refCount = 0;
Star::Star() : starSpeed(0), starScale(0), locX(0), locY(0)
{
if (starTexture == NULL)
{
starTexture = new sf::Texture();
}
refCount++;
}
Star::~Star()
{
refCount--;
if (refCount == 0)
{
delete starTexture;
starTexture = NULL;
}
}
我使用的星級這樣的.. 。
for (int i = 0; i < STAR_COUNT; ++i)
{
Star star;
star.Initialize(/* blah blah */);
starVector.push_back(star);
}
我是「高級C++技術」的新手,我很擔心這不起作用。我是否需要定義一個拷貝構造函數?矢量會弄亂我的參考計數嗎?我願意提供更好的方法來提供這方面的建議。我想我可以保持紋理以外的類,並通過一個參考,當我初始化每個星,但我喜歡留在類內的紋理...
爲什麼要添加引用次數的compilcations。爲什麼不是sf :: Texture Star :: starTexture;讓棧疊加應變? –