Проблема с итератором в функции-члене - PullRequest
0 голосов
/ 23 сентября 2018
#ifndef User_hpp
#define User_hpp
#include <stdio.h>
#include "Account.hpp"
#include "Associazione.hpp"
#include <vector>

class User : public Account{

private:
    string date;
    string surname;
    string address;
    vector<Associazione> links;

public:
    void iterateVector() const;
...

Теперь, если я хочу перебрать вектор "links" ... я разработал метод "iterateVector ()" в файл .cpp следующим образом:

#include "User.hpp"
#include <iostream>

User::User(){

}

void User::iterateVector() const{
for (vector<Associazione>::iterator it = links.begin(); it != 
     links.end(); ++it){
}

, но компилятор возвращает мнеошибка:

Нет жизнеспособного преобразования из '__wrap_iter std :: __ 1 :: vector Associazione, std :: __ 1 :: allocator Associazione :: const_pointer' в '__wrap_iter

Может кто-нибудь помочьмне? ..

1 Ответ

0 голосов
/ 24 сентября 2018

Это

void User::iterateVector() const{
for (vector<Associazione>::iterator it = links.begin(); it != 
     links.end(); ++it){
}

должно быть

void User::iterateVector() const{
for (vector<Associazione>::const_iterator it = links.begin(); it != 
     links.end(); ++it){
}

, потому что User :: iterateVector () является константной функцией-членом, обещающей не изменять никаких членов.

...