1IntelliSense: 不存在从 "int" 转换到 "std::_Vector_iterator<std::_Vector_val<std::_S
1IntelliSense: 不存在从 "int" 转换到 "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>" 的适当构造函数e:\大二\数据结构期末\exercise3\category.cpp11510main
代码
vector<int>::iterator Category::itemsBegin()
{
if (this->items.empty())
return NULL;
else
return this->items.begin();
}
[解决办法]
人家说的是呀
代码
vector<int>::iterator Category::itemsBegin()
{
if (this->items.empty())
return NULL; //函数的返回值要求的类型是vector<int>::iterator,NULL肯定不是这个类型吧
else
return this->items.begin();
}
想想看,我们定义一个vector<int> v之后,他是空的,也即初始size是0,但是我们仍然可以用v.begin()来返回一个vector<int>::const_iterator呀:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> v;
if(v.begin() == v.end()) cout << "yes" << endl;
return 0;
}
所以lz在设计时也可以不用检测是否为空,直接返回items.begin()就好(当然,这样的iterator不能解引用的说)