【发布时间】:2011-12-12 08:06:12
【问题描述】:
我的游戏中有一个星星类,我希望它们使用相同的纹理,所以我想出了这个代码......
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++ 技术”的新手,我担心这行不通。我需要定义一个复制构造函数吗?向量会弄乱我的引用计数吗?我也愿意接受有关更好方法的建议。我想我可以将纹理保留在类之外并在初始化每颗星时传递一个引用,但我更喜欢将纹理留在类中......
【问题讨论】:
-
为什么要添加 refcount 的编译。为什么不 sf::Texture Star::starTexture;让堆栈解决压力?
标签: c++ memory static vector copy-constructor