我想在矢量上存储物体。但我不知道为什么它不起作用。
#include <iostream>
#include <vector>
using namespace std;
我在Persona.h文件中有一个Persona类。它只有两种方法: 默认构造函数和一个名为mensaje()的方法都是公共的,它没有任何私有成员。
#include "Persona.h"
int main()
{
vector<Persona> personas;
Persona persona1;
Persona persona2;
personas.push_back(persona1);
personas.push_back(persona2);
vector<Persona>::const_iterator p;
for(p = personas.begin(); p <= personas.end(); p++) {
这是我收到错误消息的地方
p.mensaje();
}
}
我认为问题是我试图称之为'p'的方式。 我尝试使用const_iterator而不是任何其他类型是对的吗?
答案 0 :(得分:3)
p
是迭代器而不是对象本身,你需要取消引用它:
(*p).mensaje();
OR
p->mensaje();
并且
更新
for(p = personas.begin(); p <= personas.end(); p++) {
为:
for(p = personas.begin(); p != personas.end(); p++) {
^^^^^^
答案 1 :(得分:1)
您正在尝试在const对象(const迭代器引用的对象)上调用非const方法。由于mensaje()
方法不修改对象,因此应将其声明为const,如下所示:
void Persona::mensaje() const;
进行此更改后,您应该能够在const迭代器返回的const对象(引用)上调用该方法。
(...除了其他答案中提到的其他语法错误。)