最好使用 STL 提供的容器,而不是描述你自己的容器(除非你已经证明它不合适)。如果(子)容器是有序的,但不是按它们的 ID 排序的,那么 a vector
ordeque
可能是不错的选择。所有 STL 容器都有一个size()
方法来报告容器所包含的元素数量。
您也没有在模型中公开您的任何成员。您要么需要将它们公开,要么提供公共访问器,或者定义朋友。作为一个模型,您可能应该定义公共接口,以便您以后可以自由地修改您的实现,同时保持您的模型完好无损。
在您的模型中,除了 ID 之外,它Document
看起来与 a 完全一样Container
,因此可以将其分解。
class Container;
typedef std::vector<Container> Containers;
class ContainerOwner
{
protected:
std::string m_name;
Containers m_list;
};
class Document : public ContainerOwner
{
public:
std::string & DocumentName () { return m_name; }
const std::string & DocumentName () const { return m_name; }
Containers & ContainerList () { return m_list; }
const Containers & ContainerList () const { return m_list; }
};
class Container : public ContainerOwner
{
int m_id;
public:
std::string & ContainerName () { return m_name; }
const std::string & ContainerName () const { return m_name; }
int & ContainerId () { return m_id; }
int ContainerId () const { return m_id; }
Containers & SubContainerList () { return m_list; }
const Containers & SubContainerList () const { return m_list; }
};