我需要在类中包含同一类的指针(类似于链接列表,包含指向下一个链接的指针)。我的要求是这样的:
class A
{
class A* child;
}
我想确保 A->child->child 始终为 NULL 并且没有人可以更改它。(确保链接列表不超过两个节点)。
有什么帮助吗?
任何这样的限制都会很尴尬(如果可能的话)。我会改用一个固定长度的数组:
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");
}
}
它无法完成,无论如何都不使用单个链接。如果您有一个指向“父”的链接,则可以通过将成员变量child
和parent
成员变量设为私有来完成,然后具有特殊的访问功能,以确保您不能向链中的第一个对象添加两个以上的链接。
我建议使用“父”链的原因是因为您可以强制链中的第一个对象检查它的child
链,但如果您可以访问例如链中的最后一个对象,您可以在该链中再添加两个子对象。