+ -
当前位置:首页 → 问答吧 → 遍历向量的问题,求帮助

遍历向量的问题,求帮助

时间:2011-12-25

来源:互联网

class Student;
class GraduateStudent; //class Student的子类
vector<Student*> stu_vec;
Student s;
GraduateStudent gs;
stu_vec.push_back(&s);
stu_vec.push_back(&gs);
for(vector<Student*>::iterator it=stu_vec.begin();it!=stu_vec.end();++it)
{
  std::cout<<*it.name<<endl; //这一行error
}
name 是Student中已定义的
但是我不能通过 遍历器访问 向量中所存对象的成员
请问该怎么办呢 ?

P.S.:Merry Xmas!

作者: Vessia   发布时间: 2011-12-25

C/C++ code

std::cout<<*it.name<<endl; //这一行error
//你在类中定义name是private的
//改为public

作者: elegant87   发布时间: 2011-12-25

*it.name
改成
it->name

作者: yisikaipu   发布时间: 2011-12-25

引用 1 楼 elegant87 的回复:

C/C++ code

std::cout<<*it.name<<endl; //这一行error
//你在类中定义name是private的
//改为public

是public的,类中对象的所有成员貌似我都不能通过这种方式访问的

作者: Vessia   发布时间: 2011-12-25

引用 2 楼 yisikaipu 的回复:*it.name
改成
it->name


更正,应是(*it)->name

作者: yisikaipu   发布时间: 2011-12-25

引用 4 楼 yisikaipu 的回复:

引用 2 楼 yisikaipu 的回复:*it.name
改成
it->name

更正,应是(*it)->name

嗯,对了
再问一下这个为什么呢 ?
为什么要加括号,为什么不能用点,要用 ->呢?
谢谢了~!

作者: Vessia   发布时间: 2011-12-25

因为是指针,所以要用指针指示符!

作者: zhozhoyu   发布时间: 2011-12-25

因为.的优先级大于*
*iter.name
等价于
*(iter.name)

作者: johnpher   发布时间: 2011-12-25