我要求在一个类中包含一个相同类的指针(类似链接列表,包含指向下一个链接的指针)。我的要求是这样的:
class A
{
class A* child;
}
我想确保A-> child->子项永远为NULL,没有人可以更改它。 (确保链接列表不超过两个节点)。
任何帮助?
答案 0 :(得分: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");
}
}
答案 1 :(得分:0)
无法完成,不使用单个链接。如果你有一个指向“父”的链接,可以通过将child
和parent
成员变量设为私有来完成,然后使用特殊的访问函数确保你不能添加两个以上链接到链中的第一个对象。
我建议使用“父”链的原因是因为您可以强制链中的第一个对象检查它的child
链,但是如果您可以访问例如{{1}}链。链中的最后一个对象,您可以在该链中添加两个子项。