C++编译报错std::vector<Invitee>不存在display成员的修复求助
问题原因
你遇到的编译报错是因为 std::vector<Invitee> 属于C++标准库的容器类型,本身没有内置display()成员方法。你定义的display()是Invitee类的成员函数,只能作用于Invitee类的单个实例,不能直接作用于存储多个Invitee实例的vector容器。
修正方案
只需要修改Event类的display()方法,遍历vector容器内的所有Invitee对象,逐个调用每个对象的display()方法即可,修改参考代码如下:
// 建议先修改Invitee类的display方法,添加const修饰符,符合常量调用规范 class Invitee { // 其他原有代码保持不变 void display() const { // 新增const修饰 cout << "Email: " << email << endl; } }; class Event { // 其他原有代码保持不变 void display() { cout << "Title: " << title << endl; cout << "Location: " << location << endl; date->GetDate(); time->GetTime(); // 替换原来的list.display()为以下遍历代码 for (const auto& item : list) { item.display(); } } };
如果你的编译环境不支持C++11及以上版本的范围for循环,可以改用迭代器遍历:
for (vector<Invitee>::const_iterator it = list.begin(); it != list.end(); ++it) { it->display(); }
修改完成后即可正常输出vector中存储的所有受邀人邮箱信息。
内容的提问来源于stack exchange,提问作者Jake Alvarado
相关产品推荐
相关产品推荐

