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

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

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

Author24 — интернет-сервис помощи студентам
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая находится в классе. Насколько я понял, проблема заключается в том, что нужно перегрузить операцию =, но я не знаю, как это сделать, конкретно со структурой внутри класса.
Ниже предложен возможный вариант, но он, увы, всё-равно бракует операцию =.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2017, 23:54
Ответы с готовыми решениями:

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

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

Перегрузить оператор присваивания для класса
Помогите, пожалуйста. Требуется написать оператор присваивания для данного класса class ARRAY{...

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

5
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
30.04.2017, 00:07 2
Цитата Сообщение от IgoHz Посмотреть сообщение
Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая находится в классе.
Покажи, как делал.
Цитата Сообщение от IgoHz Посмотреть сообщение
Насколько я понял, проблема заключается в том, что нужно перегрузить операцию =
Не нужно.
1
0 / 0 / 0
Регистрация: 26.12.2016
Сообщений: 24
30.04.2017, 00:10  [ТС] 3
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 4
Для Си-строк массивы нужны, а не просто char:
C++
1
2
char lastname[30];
        char name[30];
0
0 / 0 / 0
Регистрация: 26.12.2016
Сообщений: 24
30.04.2017, 00:17  [ТС] 5
конкретно это наблюдается в 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 6
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
30.04.2017, 00:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2017, 00:25
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru