gpt4 book ai didi

c++ - c++中operator->()的定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:20:20 25 4
gpt4 key购买 nike

请告诉我如何为 std::list 的迭代器定义 operator->() 以便引用迭代器指向的元素的成员。

编辑:

问题是如果你这样实现(Fred Nurk):

template<class T>
struct list {
private:
struct Node { // internal class that actually makes up the list structure
Node *prev, *next;
T data;
};

public:
struct iterator { // iterator interface to the above internal node type
T* operator->() const {
return &_node->data;
}
private:
Node *_node;
}
};

然后当你写:

struct A {
int n;
};
void f() {
list<A> L; // imagine this is filled with some data
list<A>::iterator x = L.begin();

x->n = 42;
}

然后

x->n 我理解为 x->operator->()n 等同于 (A ponter to a)n 这是一个废话。这部分怎么理解。一些答案告诉它等同于 x->operator->()->n; (而不是 x->operator->()n)但我不明白为什么。 请解释一下。

最佳答案

(提示:它返回一个指向元素的指针。)

关于c++ - c++中operator->()的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com