C++中类可以使用容器吗

就是比如classpoint{public:voidb();};voidpoint::b(){cout<<1<<endl;}intmain(){vector<point>... 就是比如

class point{
public:
void b();

};
void point::b(){
cout<<1<<endl;
}

int main()
{
vector<point> a;

vector<point>::iterator item=a.begin();

*item.b();

return 0;

}

这样为什么会报错?
展开
 我来答
猿宅
2013-04-20 · TA获得超过156个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:179万
展开全部
很奇怪的一个错误,将*item.b()改成(*item).b()即可。
我将point改成string,*item.b()改成cout<<*item.length()试了下,也是同样的错误。这就说明跟你写的类没有关系,应该是vector或者iterator的原因。
我找了好久也没找到这样的限制条件。我猜测发生这个错误的原因可能是因为iterator只是一个地址,用它来调用函数时一定要先确定类型?不管怎样,记下来,以后用的时候都用括号括起来总不会有错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fg5823820
2013-04-20 · TA获得超过399个赞
知道小有建树答主
回答量:705
采纳率:100%
帮助的人:619万
展开全部

这样当然会报错

首先,你的容器是空的,a.begin()返回的迭代器无效

其次,(*item).b();才对


正确的代码:

vector<point> a(1);
vector<point>::iterator item=a.begin();
(*item).b();
return 0;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式