void SetDescription(const std::string& p_desc){ m_description = p_desc; }
//string& 这样不仅不用构造对象副本,也可以保证对象不被修改。
class HasRegion
{
public:
HasRegion() :m_region(0){}
entityid Region()const{ return m_region; }
void SetRegion(entityid p_region){ m_region = p_region; }
protected:
entityid m_region;
};
//把这种Has的关系也抽象成类。
typedef std::set<entityid> characters;
//set是已排序的容器。为了快速检索。
//如何封装一个set类:
class HasCharacters
{
public:
typedef std::set<entityid> characters;
typedef items::iterator itemitr;
void AddItem(entityid p_id){ m_items.insert(p_id); }
void DelItem(entityid p_id){ m_items.erase(p_id); }
itemitr ItemsBegin(){ return m_items.begin(); }
itemitr ItemsEnd(){ return m_items.end(); }
size_t Items(){ return m_items.size(); }
protected:
items m_items;
};
//重载operator()的用法
//定义时
struct stringmatchfull
{
...
bool operator()(const std::string& p_name)
{
return search == BasicLib::LowerCase(p_name);
}
};
//使用时
stringmatchfull a("hehe");
cout << "The result is " << a("haha") << endl;
//不是a.("haha")