C ++,向量上的对象

时间:2014-02-11 04:28:38

标签: c++ vector iterator const

我想在矢量上存储物体。但我不知道为什么它不起作用。

‪#‎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而不是任何其他类型是对的吗?

2 个答案:

答案 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对象(引用)上调用该方法。

(...除了其他答案中提到的其他语法错误。)