1 / 1 / 0
Регистрация: 14.10.2018
Сообщений: 16
1

C++ | Проблема с итератором

17.05.2019, 22:26. Показов 938. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть два класса - PhoneBook и Contact. PhoneBook содержит set<Contact>. Также есть метод ShowContacts() который выводит все элементы set<Contact>. Но когда я пишу cout << *iter << endl; выводит синтаксическую ошибку
"отсутствует оператор "<<", соответствующий этим операнда"

В чём проблема моего кода?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class PhoneBook
{
    private:
        set<Contact> contacts;
 
    public:
        void ShowContacts() const
        {
            for (set<Contact>::const_iterator c_iterator = contacts.begin();
                c_iterator != contacts.end();
                c_iterator++)
            {
                cout << *c_iterator << endl; //вот тут ошибку
            }
        }
};
 
class Contact
{
    private:
        string name, number, contactInString;
 
    public:
        Contact(string _name, string _number)
            :name(_name), number(_number) {}
 
        operator const char*()
        {
            contactInString = name + " : " + number;
            return contactInString.c_str();
        }
};
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2019, 22:26
Ответы с готовыми решениями:

Проблема с итератором
Добрый день! На днях столкнулся с трудностью. Есть текстовый файл с ионами. Моя функция должна...

Проблема с итератором
Для тренировки по теме map решил создать подобие словаря, где ключ - английское слово, а значение -...

Проблема с итератором в <vector>
Всем привет. Помогите пожалуйста решить проблему: У меня существует класс class Book { string...

Работа с итератором
Есть задание: Описать функцию с двумя параметрами: контейнер-список целых элементов и...

1
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
17.05.2019, 22:40 2
Лучший ответ Сообщение было отмечено Yaroslav1337 как решение

Решение

Цитата Сообщение от Yaroslav1337 Посмотреть сообщение
operator const char*()
Для того, чтобы этот оператор вызывался здесь
Цитата Сообщение от Yaroslav1337 Посмотреть сообщение
cout << *c_iterator << endl;
он должен быть const
C++
1
operator const char*() const
Потому что элементы set - const.
Правда, в операторе const char* вы меняете состояние класса, поэтому, чтобы не делать изменяемый член mutable, лучше все-таки определить operator<<, а operator const char* удалить вообще.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class PhoneBook
{
    private:
        set<Contact> contacts;
 
    public:
        void ShowContacts() const
        {
            for (set<Contact>::const_iterator c_iterator = contacts.begin();
                c_iterator != contacts.end();
                c_iterator++)
            {
                cout << *c_iterator << endl; 
            }
        }
};
 
class Contact
{
    private:
        string name, number;
 
    public:
        Contact(string _name, string _number)
            :name(_name), number(_number) {}
 
        friend operator <<(std::ostream & out, Contact const & x)
        {
            return out << (x.name + " : " + x.number);
        }
};
1
17.05.2019, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2019, 22:40
Помогаю со студенческими работами здесь

ошибка с итератором
Помогите, пожалуйста, не могу понять зачем вычитать нужно еденицу из deq1.begin() #include...

Что не так с итератором ?
Есть задача - для списка целочисленных значений реализовать итератор с поддержкой константной...

Сравнение указателя с итератором
Здравствуйте, уважаемые знатоки! Продолжая изучать STL и итераторы наткнулся на такую вот аналогию:...

Класс-контейнер стек с итератором
У меня есть задание - калькулятор комплексных чисел. Нужна помощь в написании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru