【发布时间】:2012-03-12 06:39:24
【问题描述】:
我目前正在创建一个方形列表,其中一个要求是重载前置和后缀 ++ 运算符。
我尝试在我的 .hpp 文件中重载 ++ 运算符以递增迭代器。但是在调用 ++ 运算符时,它不会调用重载的代码,而只是使用默认值。
iterator& operator ++ () { // pre-increment
std::list<int>::iterator i = list_Values.begin();
advance(i,1);
return &*i;
}
iterator operator ++ (int) { // post-increment
std::list<int>::iterator i = list_Values.begin();
advance(i,1);
return &*i;
}
我尝试以这种方式调用 ++ 运算符:
int* test = sqrList.begin();
++test;
test++;
【问题讨论】:
-
默认?没有默认
operator++! -
@Pubby 很好,当我逐步完成它进入标准库时
-
为什么要在容器上定义 ++?在迭代器类型上做,当然,但不是容器......
-
看起来
++应用于 any 迭代器总是给你一个过去的开头,对吗? -
您的代码有问题。 非常错误。当期望迭代器作为返回类型时,您将返回一个指向某物的指针,您正在返回对预增量中的局部变量的引用,并且容器类中似乎有
operator++!
标签: c++ visual-studio-2010 iterator operators operator-overloading