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

Как перегрузить операцию = для присваивания элементам структуры внутри класса значений?

29.04.2017, 23:54. Показов 1324. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая находится в классе. Насколько я понял, проблема заключается в том, что нужно перегрузить операцию =, но я не знаю, как это сделать, конкретно со структурой внутри класса.
Ниже предложен возможный вариант, но он, увы, всё-равно бракует операцию =.
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
#include <iostream>
#include <string>
using namespace std;
 
class Bank
{
    struct Accounts
    {
        char lastname;
        char name;
        double count;
        int id = 0;
        int pin = 0;
        int operator = (const Accounts& num)
        {
            return(count = num.count,
                id = num.id,
                pin = num.pin);
        }
    };
public:
    Accounts data;
    Bank(int n)
    {
        for (int i = 0; i < n; ++i)
        {
            cout << "familia" << endl;
            cin >> data.lastname;
            cout << "imya" << endl;
            cin >> data.name;
            cout << "sozdanie id accaunta" << endl;
            cout << "id: " << data.id = rand() % 100000;
            cout << "pin: " << data.pin = rand() % 1000;
            cout << "schet: " << data.count = 0;
        }
    }
};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2017, 23:54
Ответы с готовыми решениями:

Использование вектора для присваивания значений элементам структуры
Здравствуйте, форумчане. Сразу отмечу, что я новичек, так что, возможно, мой вопрос покажется вам слегка туповатым, но все же: Имеется...

Помогите перегрузить операцию присваивания
Здравствуйте, есть программа: #include&lt;iostream&gt; using namespace std; struct Element { char data; //Aaiiua Element...

Перегрузить оператор присваивания для класса
Помогите, пожалуйста. Требуется написать оператор присваивания для данного класса class ARRAY{ int size; double **m; public: ...

5
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
30.04.2017, 00:07
Цитата Сообщение от IgoHz Посмотреть сообщение
Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая находится в классе.
Покажи, как делал.
Цитата Сообщение от IgoHz Посмотреть сообщение
Насколько я понял, проблема заключается в том, что нужно перегрузить операцию =
Не нужно.
1
0 / 0 / 0
Регистрация: 26.12.2016
Сообщений: 24
30.04.2017, 00:10  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Bank(int n)
    {
        for (int i = 0; i < n; ++i)
        {
            cout << "familia" << endl;
            cin >> data.lastname;
            cout << "imya" << endl;
            cin >> data.name;
            cout << "sozdanie id accaunta" << endl;
            cout << "id: " << data.id = rand() % 100000;
            cout << "pin: " << data.pin = rand() % 1000;
            cout << "schet: " << data.count = 0;
        }
    }
Тут, в конструкторе выдаёт ошибку, мол отсутствует оператор = соответствующий данным операндам
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
30.04.2017, 00:10
Для Си-строк массивы нужны, а не просто char:
C++
1
2
char lastname[30];
        char name[30];
0
0 / 0 / 0
Регистрация: 26.12.2016
Сообщений: 24
30.04.2017, 00:17  [ТС]
конкретно это наблюдается в data.pin и data.id

Добавлено через 1 минуту
C++
1
2
char lastname[30];
        char name[30];
Точно, не заметил, но это не отменяет проблемы с id и pin

Добавлено через 4 минуты
C++
1
2
3
cout << "id: " << data.id = rand() % 100000;
            cout << "pin: " << data.pin = rand() % 1000;
            cout << "schet: " << data.count = 0;
конкретно эти три рядка и стали возбудителем проблемы
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
30.04.2017, 00:25
C++
1
2
3
4
5
6
7
            cout << "sozdanie id accaunta" << endl;
            data.id = rand() % 100000;
            cout << "id: " << data.id << endl;
            data.pin = rand() % 1000;
            cout << "pin: " << data.pin << endl;
            data.count = 0;
            cout << "schet: " << data.count << endl;
Добавлено через 5 минут
Цикл там к чему, если Accounts один?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2017, 00:25
Помогаю со студенческими работами здесь

Перегрузить операцию сложения для класса дробей
Люди добрые, помогите инвалиду;) Нужно написать программу на Си, задача такова: Перегрузить операцию сложения для класса дробей и...

Для класса Vector перегрузить операторы присваивания, сравнения, ввода и вывода
срочно помогите написать программу, желательно с комментариями если можно)) Для класса Vector перегрузить операторы присваивания, ...

Как перегрузить операцию деления, когда нужно переменную класса поделить на встроенный тип
Добрый день! Подскажите, пожалуйста, простой пример, как провести перегрузку операции деления /, если нужно переменную класса поделить на...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Как перегрузить операцию ++ для строк
Перегрузить унарные операторы «++» (префиксную и постфиксную). Как перегружать для int и для чего это надо я понимаю, но в случае...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru