Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 86

Классы: не найден оператор, принимающий правый операнд типа "Book"

02.04.2018, 22:45. Показов 1428. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотел (задали) создать телефонную книгу с помощью класса.Вот что я накидал.И компилятор выводит ошибку: бинарный ">>": не найден оператор, принимающий правый операнд типа "Book" (или приемлемое преобразование отсутствует). Собственно как исправить?
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Book
{
public:
    string name,  surname, mobp, dopinfo;
    Book()
    {
        name = "name";
        surname = "surname";
        mobp = "mobp";
        dopinfo = "dopinfo";
    }
    ~Book(){}
};
vector<Book> s, n, m, d;
void Get()
{
    int   ch; Book b; 
    do
    {
        cout << "Об абоненте" << endl;
        cout << "Фамилия:"; cin >> b; s.push_back(b);
        cout << "Имя:"; cin >> b; n.push_back(b);
        cout << "Номер:"; cin >> b; m.push_back(b);
        cout << "Доп. информация:"; cin >> b; d.push_back(b);
        cout << "0-что бы закончить "; cin >> ch;
    } while (ch != 0);
}
void Show()
{
    int i; 
    for (i = 0; i<s.size(); i++)
    {
        cout << "Об абоненте" << endl;
        cout << "Фамилия:" << s[i].surname;
        cout << "Имя:" << n[i].name;
        cout << "Номер:" << m[i].mobp;
        cout << "Доп. информация:" << d[i].dopinfo;
    }
}
int main()
{
    setlocale(LC_ALL, "rus");
    int choice;
    do {
        cout << "Выберите требуемое действие:" << endl;
        cout << "1-Добавить абонентов" << endl;
        cout << "2-Поиск абонента по фамилии" << endl;
        cout << "3-Вывести всех абонентов" << endl;
        cout << "4-Удалить или изменить информацию об абоненте" << endl;
        cout << "0-Выход" << endl;
        cin >> choice;
        switch (choice) {
        case 1:
            Get();
            break;
        case 2:
 
            break;
        case 3:
            Show();
            break;
        case 4:
 
            break;
        }
    } while (choice != 0);
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2018, 22:45
Ответы с готовыми решениями:

Ошибка: Не найден оператор, принимающий правый операнд типа 'overloaded-function'
Всем привет, такая проблема при выполнении лабораторной работы (не знаю кому это интересно, но все же), так вот, суть проблемы в чем: ...

Ошибка в коде. не найден оператор, принимающий правый операнд типа 'int'
Доброго времени суток. Не понимат что за ошибка: error C2679: бинарный '&gt;': не найден оператор, принимающий правый операнд типа 'int' (или...

Ошибка C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'double'
// ConsoleApplication2.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &quot;math.h&quot; ...

6
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
02.04.2018, 22:59
Перегружать cin или вводить по структуру по полям с getline. Вы пытаетесь через cin заполнить всю структуру. Немудрено, что ругается.
0
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 86
02.04.2018, 23:00  [ТС]
Ошибка в строке 27

Добавлено через 33 секунды
Цитата Сообщение от Hitoku Посмотреть сообщение
Перегружать cin или вводить по структуру по полям с getline. Вы пытаетесь через cin заполнить всю структуру. Немудрено, что ругается.
А как это сделать?
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
02.04.2018, 23:01
ОноРаботает, 26-30 точно. Дальше не знаю
0
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 86
02.04.2018, 23:02  [ТС]
Цитата Сообщение от Hitoku Посмотреть сообщение
Перегружать cin или вводить по структуру по полям с getline. Вы пытаетесь через cin заполнить всю структуру. Немудрено, что ругается.
getline(cin,b); не работает: error C2672: "getline": не найдена соответствующая перегруженная функция
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
02.04.2018, 23:04
Цитата Сообщение от ОноРаботает Посмотреть сообщение
А как это сделать?
проще вводить каждое поле отдельно и всё. Вроде
C++
26
cout << "Фамилия:"; getline(cin, b.surname);
Добавлено через 23 секунды
Цитата Сообщение от ОноРаботает Посмотреть сообщение
getline(cin,b); не работает
опять же, потому что вы передаёте всю структуру
1
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 86
02.04.2018, 23:12  [ТС]
Спасибо.Сделал иизменения,помогло:
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
void Get()
{
    int   ch; Book b;
    do
    {
        cout << "Об абоненте" << endl; cin.ignore();
        cout << "Фамилия:"; getline(cin, b.surname); s.push_back(b);
        cout << "Имя:"; getline(cin, b.name); n.push_back(b);
        cout << "Номер:"; getline(cin, b.mobp); m.push_back(b);
        cout << "Доп. информация:"; getline(cin, b.dopinfo); d.push_back(b);
        cout << "0-что бы закончить "; cin >> ch;
    } while (ch != 0);
}
void Show()
{
    int i; 
    for (i = 0; i<s.size(); i++)
    {
        cout << "Об абоненте" << endl;
        cout << "Фамилия:" << s[i].surname;
        cout << "Имя:" << n[i].name;
        cout << "Номер:" << m[i].mobp;
        cout << "Доп. информация:" << d[i].dopinfo;
    }
}
Ничего лишнего нету?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2018, 23:12
Помогаю со студенческими работами здесь

Конструкторы, приведение типа и ошибка "Не найден оператор, принимающий правый операнд типа 'char *'"
#include &lt;stdio.h&gt; class A { int somemember; public: A(){printf(&quot;A()\n&quot;);} A(char*){printf(&quot;A(char*)\n&quot;);} ...

Бинарный "=": не найден оператор, принимающий правый операнд типа
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iterator&gt; #include &lt;string&gt; #include &lt;list&gt; #include &lt;vector&gt;...

Не найден оператор, принимающий правый операнд типа "c"
Вроде бы в теории должно работать, а на практике не работает. container.h: namespace containers { template &lt;class i, class...

Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа
void SerializeInstitute(ofstream&amp; fileStream, Institute imi) { fileStream &lt;&lt; &quot;Course{\n&quot; &lt;&lt; endl &lt;&lt; &quot;Students: &quot; &lt;&lt;...

Ошибка : бинарный "<<": не найден оператор, принимающий правый операнд типа point
В задаче нужно найти две наиболее удаленные друг от друга очки. выдает следующую ошибку: error C2679: бинарный &quot;&lt;&lt;&quot;: не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru