gpt4 book ai didi

C++/g++ 重载增量运算符

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:37 27 4
gpt4 key购买 nike

我正在尝试实现一个双链表并想创建一个迭代器。结构是:

template<class type>
class List {
size_t listElementCnt;
...
public:
...
class iterator {
...
public:
...
iterator& operator ++();
iterator operator ++(int);
...
};
...
};

现在我想实现两个运算符的重载:

template<class type>
typename iterator& List<type>::iterator::operator ++() {
...
}
template<class type>
typename iterator List<type>::iterator::operator ++(int) {
...
}

现在有两个错误:

  • 未找到成员声明
  • 类型“迭代器”无法解析

当我重载其他运算符时,例如取消引用或(in-)等于运算符,没有错误。错误只出现在 g++ 编译器中。 visual c++ 的编译器没有显示任何错误,并且在那里工作正常。

最佳答案

在成员函数的外联定义中,函数的返回类型不在类范围内,因为类名还没有出现。因此,将您的定义更改为如下所示:

template<class type>
typename List<type>::iterator& List<type>::iterator::operator ++() {
...
}
template<class type>
typename List<type>::iterator List<type>::iterator::operator ++(int) {
...
}

关于C++/g++ 重载增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586348/

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