我试图从类方法返回一个 const 反向迭代器。但是当我将方法标记为 const 时,我的代码无法编译。如果没有 const,代码编译时不会出现任何问题。知道为什么吗?感谢您的帮助...
#include <iostream>
#include <vector>
template <class ValueType>
class DynamicDataComponent {
using ValuesType = std::vector<ValueType>;
using IteratorType = typename std::vector<ValueType>::reverse_iterator;
public:
DynamicDataComponent()
{
values.push_back(0);
values.push_back(1);
values.push_back(2);
values.push_back(3);
}
const IteratorType getRBeginIt() const {
return values.rbegin();
}
private:
ValuesType values;
};
int main() {
DynamicDataComponent<size_t> dataComponent;
std::cout << *dataComponent.getRBeginIt() << "\n";
}
你还需要定义一个const-iterator:
using ConstIteratorType = typename std::vector<ValueType>::const_reverse_iterator;
并定义您的
const
合格成员函数,如下所示:
const ConstIteratorType getRBeginIt() const {
return values.rbegin(); // or even `return values.crbegin()` to be clear
}