0

我需要在类中包含同一类的指针(类似于链接列表,包含指向下一个链接的指针)。我的要求是这样的:

    class A
    {
        class A* child;
    }

我想确保 A->child->child 始终为 NULL 并且没有人可以更改它。(确保链接列表不超过两个节点)。

有什么帮助吗?

4

2 回答 2

3

任何这样的限制都会很尴尬(如果可能的话)。我会改用一个固定长度的数组:

A* l[3];

如果您需要防止切片,或者只是

A l[3];

除此以外。

您可以通过以下方式以编程方式强制执行该限制:

class A
{
   A* child;
public:
   void addChild(A* newChild)
   {
       if ( child == NULL )
           child = newChild;
       else if ( child->child == NULL )
           child->child = newChild;
       else 
           throw std::exception("list is already at full capacity");
   }
}
于 2012-09-18T08:53:43.473 回答
0

它无法完成,无论如何都不使用单个链接。如果您有一个指向“父”的链接,则可以通过将成员变量childparent成员变量设为私有来完成,然后具有特殊的访问功能,以确保您不能向链中的第一个对象添加两个以上的链接。

我建议使用“父”链的原因是因为您可以强制链中的第一个对象检查它的child链,但如果您可以访问例如链中的最后一个对象,您可以在该链中再添加两个子对象。

于 2012-09-18T08:58:03.540 回答