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

Переопределенные операторы в дочернем классе

18.06.2018, 00:39. Показов 1587. Ответов 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
class A {
private:
    struct Struct {
        int b;
        int c;
 
        Struct(int i, int j);
        ~Struct();
 
        Struct& operator=(Struct sec_struct);
    };
 
    int a;
    Struct A_struct;
 
public:
    A(int A_a, Struct A_sec_struct);
    ~A();
    A& operator=(A sec_a);
    /*функции и методы*/
};
 
class B:A
{
private:
    A s;
    int d;
public:
 
    void setB(A b_s, int b_d); // вот тут b_d нормально приравнивается, а в b_s приравнивается только а. Структура по нулям
};
C++
1
2
3
4
void setB(A b_s, int b_d) {
    d = b_d;
    s = b_s;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2018, 00:39
Ответы с готовыми решениями:

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot. Скажите как объявить, что бы один из...

Ошибка в дочернем классе
Не могу найти ошибку в дочернем классе, возможно не правильно написать main Задание и код: Код нужно переписывать в сообщение Только...

Перегрузка fstream в дочернем классе
h class Child:public StudentsBD{ friend fstream &operator<<( fstream& , string & ); friend fstream &operator>>( fstream& , string...

5
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
18.06.2018, 01:04
Цитата Сообщение от Maskit Посмотреть сообщение
Примерный код такой:
И где реализации операторов присваивания??? Как по-вашему мы должны догадаться, что там у вас понаписано?
0
5 / 5 / 0
Регистрация: 22.05.2016
Сообщений: 15
18.06.2018, 14:30  [ТС]
Не понимаю, зачем эта информация..
Для структуры:
C++
1
2
3
A::Struct& A::Struct::operator=(Struct sub_struct) {
    return Struct(sub_struct.b, sub_struct.c);
}
Для 1-го класса:
C++
1
2
3
4
5
6
A& A::operator=(A sub_a) {
 
    a = sub_a.a;
    A_struct= sub_a.A_struct;
    return *this;
}
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.06.2018, 15:22
Цитата Сообщение от Maskit Посмотреть сообщение
A::Struct& A::Struct::operator=(Struct sub_struct) {
* * return Struct(sub_struct.b, sub_struct.c);
}
ни логики, ни здравого смысла, и написано с ошибкой.

1. код в мусорку.
2. берем учебник для самых маленьких, читаем, что такое ссылки и зачем они нужны.
3. читаем, что такое оператор присваивания и какова его каноническая форма.
4. переписываем код по человечачьи.
5. профит???!!!
0
5 / 5 / 0
Регистрация: 22.05.2016
Сообщений: 15
18.06.2018, 15:29  [ТС]
Цитата Сообщение от hoggy Посмотреть сообщение
код в мусорку.
Решил сделать похожее в другом классе, нашел ошибку. Исправил, все заработало. Так что разобрался. Все супер) Просто похожее решение нашел на каком то сайте и вроде как локально все работало.
Цитата Сообщение от hoggy Посмотреть сообщение
2. берем учебник для самых маленьких, читаем, что такое ссылки и зачем они нужны.
3. читаем, что такое оператор присваивания и какова его каноническая форма.
4. переписываем код по человечачьи.
5. профит???!!!
А вот такие ответы скорее раздражают и никак не помогают. Уж лучше не писать ничего, чем вот так. Тупой флуд. В общем, сделал такое же переопределение, как и для класса, и все заработало.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
21.06.2018, 21:43
Цитата Сообщение от Maskit Посмотреть сообщение
Не понимаю, зачем эта информация..
Это как? Вы же сами сказали, что не работают переопределенные операторы. И на вопрос о том, как реализованы эти операторы вы отвечаете "не понимаю, зачем эта информация"?

Цитата Сообщение от Maskit Посмотреть сообщение
C++
1
2
3
A::Struct& A::Struct::operator=(Struct sub_struct) {
  return Struct(sub_struct.b, sub_struct.c);
}
Этот код в принципе некомпилируем. Невозможно привязать ссылку ко временному объекту. (А даже если бы он компилировался, все равно была бы чушь - временный объект сразу уничтожается и остается указывать "в никуда".) В любом случае тут даже отдаленных попыток какого-то присваивания не видно.

Цитата Сообщение от Maskit Посмотреть сообщение
C++
1
2
3
4
5
A& A::operator=(A sub_a) {
  a = sub_a.a;
  A_struct= sub_a.A_struct;
  return *this;
}
А вот тут вдруг [почти] все хорошо. Как это так получилось, что здесь написано что-то более-менее осмысленное, а в предыдущем операторе написана какая-то полнейшая чушь? Два разных человека писало?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2018, 21:43
Помогаю со студенческими работами здесь

Не могу в дочернем классе вызвать protected метод
Всем привет! Начал писать одну программку, и столкнулся со следующей проблемой: у меня пока 2 класса: MemObject и Vector, где Vector...

Использование переменных базового класса в дочернем классе
Доброго времени суток. Подскажите пожалуйста как в классе SumbString работать с переменными(string s;int z ; ) класса factory ? Мне...

Изменение информации в дочернем классе, через ссылку
Подскажите, есть класс class Class1 В конструкторе я создаю структуру, которая будет хранить в себе ссылки на все классы...

Можно ли как-то в дочернем классе получить указатель родителя?
У меня тут появилась мыслишка :D В любом классе есть так сказать скрытый указатель на самого себя - this, а можно ли как то получить в...

Вызов виртуальной функции, определённой в дочернем классе, через указатель на базовый класс
Как вызвать виртуальную функцию, определённую в дочернем классе, через указатель на базовый класс? Совершенно точно известно, что на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru