c++ 从类方法返回 const 反向迭代器,但方法不能是 const?

问题描述 投票:0回答:1

我试图从类方法返回一个 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";
}
c++ methods iterator constants const-iterator
1个回答
0
投票

你还需要定义一个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
}
© www.soinside.com 2019 - 2024. All rights reserved.