2021-04-08 09:51:13 +08:00

41 lines
748 B
C++

#pragma once
class Creature;
class CreatureWeakPtrChunk
{
public:
CreatureWeakPtrChunk();
~CreatureWeakPtrChunk();
void Clear();
void Set(Creature* c);
private:
Creature* ptr_ = nullptr;
list_head ptrs_;
friend class CreatureWeakPtr;
};
class CreatureWeakPtr
{
public:
CreatureWeakPtr();
CreatureWeakPtr(const CreatureWeakPtr& x);
CreatureWeakPtr(CreatureWeakPtr&& x);
CreatureWeakPtr& operator=(const CreatureWeakPtr& x);
CreatureWeakPtr&& operator=(CreatureWeakPtr&& x);
~CreatureWeakPtr();
void Reset();
Creature* Get();
void Attach(Creature* c);
void Detach();
private:
Creature* ptr_ = nullptr;
list_head entry_;
friend class CreatureWeakPtrChunk;
};