独自のコンテナを説明するよりも、STLが提供するコンテナを使用することをお勧めします(不適切であることが証明された場合を除く)。(サブ)コンテナーが順序付けられているが、IDでソートされていない場合は、vector
またはdeque
がおそらく適切な選択です。すべてのSTLコンテナには、コンテナがsize()
保持する要素の数を報告するメソッドがあります。
また、モデルでメンバーを公開していません。それらを公開するか、公開アクセサーを提供するか、友達を定義する必要があります。モデルとして、おそらくパブリックインターフェイスを定義する必要があります。そうすれば、モデルをそのままにして、後で実装を自由に変更できます。
モデルでは、IDを除いてDocument
まったく同じように見えるため、除外することができます。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; }
};