如何将iterator变量声明为私有成员变量?

时间:2018-04-01 09:20:22

标签: c++ iterator

假设我想在类中为一个双向链表声明一些私有类成员变量,并尝试执行以下操作:

DoublyLinkedList<ShippingStatus> package;
DoublyLinkedListIterator<ShippingStatus> ship(&package);

我意识到第二行是不可能的,但有没有办法通过传入链表值作为参考来声明ship变量?我已成功完成其他函数中的第二行,但这意味着每次调用这些函数时都会重置ship,并且我希望我的迭代器的位置在程序运行时保存为“全局”。这就是迭代器类的构造函数看起来像

DoublyLinkedListIterator(DoublyLinkedList<ELT>* list) {
    assert(nullptr != list);
    _location = list->_header->next();
}

如果需要,我可以提供任何其他功能。

1 个答案:

答案 0 :(得分:1)

也许您可以使用成员初始化列表:

template <typename ShippingStatus>
class MyClass
{
    DoublyLinkedList<ShippingStatus> package;
    DoublyLinkedListIterator<ShippingStatus> ship;
public:
    MyClass(DoublyLinkedList<ShippingStatus> package) : package{ package }, ship{ &(this->package) } {}
};