重载运算符

发布于 2025-01-06 17:40:13 字数 535 浏览 3 评论 0原文

我目前正在尝试为我的方形列表容器重载 .begin() 上的 ++ 运算符。

在我的 hpp 文件中,我有以下内容:

template <typename T_>
    class sq_list 
    {

    public:
        typedef T_* iterator;

        iterator _itr;
        square_list( iterator n ) : _itr(n) { }


    sq_list operator ++ (sq_list<int> lhs) {    
        return  lhs++;
        }
    };

目前,这需要我将迭代器放在方形列表对象中。 我需要它做的是当 .cpp 文件执行 ++name.begin(); 时调用 ++ 方法。而不是将该值放入我的容器中,然后增加该容器。 如何让我的重载函数仅在 ++name.begin() 上工作以增加我的迭代器,而不必将其放入 sq_list 容器中?

谢谢!

I am currently attempting to overload the ++ operator on the .begin() for my square list contatiner.

My in my hpp file I have the following:

template <typename T_>
    class sq_list 
    {

    public:
        typedef T_* iterator;

        iterator _itr;
        square_list( iterator n ) : _itr(n) { }


    sq_list operator ++ (sq_list<int> lhs) {    
        return  lhs++;
        }
    };

Currently this requires me to put the iterator inside of the square list object.
What I need it to do is to call the ++ method when the .cpp file does a ++name.begin(); instead of putting that value inside of my container and then incrementing that container.
How do I get my overloaded function to work just on the ++name.begin() to increment my iterator instead of having to put it inside my sq_list container?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软糖 2025-01-13 17:40:13

一般来说,您需要在迭代器上定义运算符。在这里,您的迭代器是指向底层元素类型的指针,因此 ++ 已经可以处理它了。您是否尝试过仅在迭代器上调用 ++,而不使用 operator++ 实现?

In general, you need to define the operator on the iterator. Here, your iterator is a pointer to the underlying element type, so ++ already works on that. Have you tried calling ++ simply on the iterator, without an operator++ implementation at all?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文