对队列C 的操作员摩托装载
Operator-oveloading dereference for a queue C++
我正在用节点迭代的类创建一个队列。
要做到这一点,我需要超载Dereferencer和" ",以便我可以写一个迭代。
但是我真的没有得到如何从过载中恢复想要的东西。我一直都会得到标志。
这是两个类:
typedef Person Item;
class Node;
class QIterator
{
private:
Node *node;
public:
QIterator(); // default
QIterator(Node *n); // initialized
Item &operator*() const;
QIterator &operator++(); // prefix ++i
QIterator operator++(int); // postfix i++
bool operator!=(const QIterator &qi) const;
};
//---------------------------------------------------------------------------
class QList
{
private:
Node *first, *last;
public:
QList() :first(nullptr), last(nullptr) {};
~QList() {};
void enque(Item item);
bool deque(Item &item);
bool del(Item item);
bool isEmpty()const;
QIterator begin()const { return QIterator(first); }
QIterator end() const { return QIterator(nullptr); }
};
这是节点的公共类:
class Node
{
public:
Node *next;
Item data;
Node(Node *n, Item newData) : next(n), data(newData) {}
};
我有问题的是超载。
item& operator*((const;被认为是恢复对数据登录"节点"指向的节点中的数据的引用。数据类型应为项目&。
Item &QIterator::operator*() const
{
return &Item;
}
超载:Qiterator& operator ((;被认为是返回对" "之后的 *该点的引用。数据类型应为qiterator&。
QIterator &QIterator::operator++() {
node = node->next;
return *this->node;
}
这件事用指针是我想理解的,因为我可以想象程序通过使用程序的速度更快。我应该如何看待理解这一点并记住它是如何工作的。
超载Qiterator操作员 (int(;应返回在执行" "之前迭代器指向的节点内的内容。它返回dataype qiterator
QIterator QIterator::operator++(int) {
return this;
node = node->next;
}
Item &QIterator::operator*() const
{
return &Item;
}
是错误的,因为Item
是一种类型,而不是对象。即使Item
是一个对象,return &Item
也是错误的,因为它会评估指针。您需要的是:
Item& QIterator::operator*() const
{
// return a reference to the item that the node points to.
return node->data;
}
QIterator &QIterator::operator++() {
node = node->next;
return *this->node;
}
是错误的,因为返回类型与return
语句中使用的表达式的类型不匹配。您需要使用:
QIterator& QIterator::operator++() {
node = node->next;
return *this;
}
相关文章:
- <<操作员在下面的行中工作
- C++ 与操作员不匹配<<
- 操作员C++的模棱两可的过载
- C++中>>操作员过载时出现问题?
- NaN 上的宇宙飞船操作员
- 比根<操作员
- SFINAE不能防止模棱两可的操作员过载吗?
- 什么是现实中的"endl"(或任何输出操纵器)?它是如何实现的,它如何与操作员<<一起工
- 为什么"delete"操作员给我访问权限冲突
- 为什么使操作员成为新的专用会打破 std::shared_ptr?
- 在这种情况下是私有的吗?试图使操作员<<过载
- C++操作员过载>>
- 是否有 C++20 浮点数的包装器,使我能够默认宇宙飞船操作员?
- 与异常处理程序中的操作员<<不匹配
- 复印作业操作员说明
- 友谊和操作员+=重载
- >操作员在比较两个C++容器时会怎么做?
- 与操作员比较两个计时时间点
- C++操作员订单评估
- 对队列C 的操作员摩托装载