65,211
社区成员
发帖
与我相关
我的任务
分享
class CPerson
{
public:
CPerson( int id );
~CPerson();
bool GoThroughDoor( CDoor* pDoor );
private:
int id_;
CGroup* m_Owner;
};
class CDoor
{
public:
CDoor();
CDoor( CGroup* pRelation );
~CDoor();
void ChangeRelation( CGroup* relation );
bool OpenDoor( CPerson& person );
private:
CGroup* relation_;
};
class CGroup
{
public:
CGroup();
~CGroup();
void AddPerson();
void DelPerson();
bool PermitPerson( CPerson& person );
private:
bool FindPerson( CPerson& person );
private:
set<CPerson> person_permit_;
}
class Person{};
class Door{};
template<typename T>
class class_a :public T{};
template<typename T>
class class_b :public T{};
template<typename P, typename D>
class Open_Method;
template<>
class Open_Method<class_a<Person>, class_a<Door>>{};
template<>
class Open_Method<class_b<Person>, class_b<Door>>{};