说我有这个类叫做Dog。每只狗都有不同的名字,但有相同的叫声(从资源文件加载)。一个对象的共享资源
class Dog {
public:
Dog(const string &name) : _name(name) {
_barkingVoice.load();
}
~Dog() {
_barkingVoice.free();
}
string getName() const { return _name; }
void bark() { _barkingVoice.play(); }
private:
string _name;
VoiceResource _barkingVoice;
};
我想打电话给_barkingVoice.load()
只有狗的实例是第一位的,只有_barkingVoice.free()
如果有狗没有更多的实例。
显而易见的解决方案是将_barkingVoice设置为静态,并将Dog的引用计数器作为数据成员。
我的问题是如果有一个更简单的方法来做到这一点。也许是std实现或类似的东西。
太棒了。谢谢! – Pilpel