如何重写运算符 ++ 以返回指针
how to override operator ++ to return a pointer
我写了一个链表,我正在尝试覆盖++运算符。我将链表编写为类对象,将节点编写为包含数据和两个指针(下一个和上一个节点)的结构。每次我在节点指针之后调用 ++ 运算符时,我都想返回指向下一个的指针所以我想写ptr++
而不是写ptr = ptr->next
.
我的标头代码:
class MyLinkedList
{
private:
struct Node
{
double data;
Node *next = NULL;
Node *previous = NULL;
Node& operator ++ ();
}
Node *head;
Node *tail;
}
CPP 代码:
MyLinkedList::Node& MyLinkedList::Node::operator ++ ()
{
*this = *next;
return *this;
}
例如
MyLinkedList a;
...
Node *ptr = a.tail;
while (ptr != NULL)
{
ptr++; //ptr = ptr->next;
}
使指针成为类:
// This is an example
class NodePtr
{
Node *m_node;
public:
NodePtr() : m_node(nullptr) {}
NodePtr(Node * node) : m_node(node) {}
bool IsNull() const { return m_node == null; }
Node& GetNode() { assert(m_node); return *m_node; }
NodePtr& operator ++ () { assert(m_node); m_node = m_node->next; return *this;}
};
相关文章:
- 在函数中返回无符号字符数组,但不返回指针
- 为什么需要返回指针来利用协方差?
- 野牛如何在解析树中返回指针
- 何时返回指针与返回对象的一般经验法则?
- 为什么使用 std::istream_iterator 构造函数返回指针
- 为什么我不能直接从返回指针的函数返回对指针的引用?
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 为什么下面的代码段返回指针指向的值而不是指针的地址?
- 使用 map<char,strring> 的迭代器返回指针 map<char,strring>*
- 如何从类成员函数返回指针,例如 size_t * class :: function(); 并使用类析构函数 ~size
- 函数返回动态强制转换的指针,返回指针,就好像它根本没有被转换一样
- 从函数返回对指针的引用与返回指针相同?
- C++ 为什么访问数组中的元素会返回指针?
- 关于函数返回指针
- 返回指针或对私有成员的引用的替代方法
- 从函数返回指针
- 通过从当地的C风格阵列中返回指针来获取一个悬空的指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 为什么C 模板功能不支持返回指针
- 返回指针的语句 - 解释它是如何工作的以及为什么