重载运算符
我目前正在尝试为我的方形列表容器重载 .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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,您需要在迭代器上定义运算符。在这里,您的迭代器是指向底层元素类型的指针,因此 ++ 已经可以处理它了。您是否尝试过仅在迭代器上调用 ++,而不使用
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?