Заблокирован
|
||||||
1 | ||||||
Передача свойства одного экземпляра класса другому экземпляру класса27.10.2014, 21:42. Показов 6223. Ответов 33
Метки нет (Все метки)
0
|
27.10.2014, 21:42 | |
Ответы с готовыми решениями:
33
Передача конструктору одного класса объект другого класса Присваивание значений одного класса другому. В чем заключается наследование одного класса другому? Полиморфизм, наследование и приведение экземпляров класса одного к другому |
47 / 28 / 12
Регистрация: 23.01.2013
Сообщений: 125
|
|
27.10.2014, 21:55 | 2 |
На момент выполнения тела конструктора наследника, базовый класс уже создан
0
|
Заблокирован
|
|
27.10.2014, 21:57 [ТС] | 3 |
значит нужно либо вклинить до этого момента или же как то подменить таблицу виртуальных символов объекта класса В, правда я не знаю как
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
27.10.2014, 21:58 | 4 |
Нельзя.
Это можно проэмулировать через указатель на "базовый" экземпляр. Но это будет уже не наследование.
1
|
Заблокирован
|
|
27.10.2014, 22:00 [ТС] | 5 |
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
|
||||||
27.10.2014, 22:00 | 6 | |||||
Сообщение было отмечено -THE_MASTER666- как решение
Решение
А не сгодится переменная со свойством static ?
Такая переменная одна на все экземпляры класса.
1
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
27.10.2014, 22:02 | 7 |
Там нечего подменять - это разные объекты с разными адресами. Там нет какой-то магической скрытой ссылки, которую можно перенаправить на другое место.
1
|
47 / 28 / 12
Регистрация: 23.01.2013
Сообщений: 125
|
|
27.10.2014, 22:02 | 8 |
Нужно пересмотреть проектирование классов. Давайте реально мучающий вопрос/задачу, уже на основе их можно будет говорить, что и как лучше сделать.
1
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
||||||
27.10.2014, 22:08 | 9 | |||||
Ну так просто не) Надо создать конструтор копирования для класса B, и при создание обьекта передать в конструктор обьект класса A, в конструкторе выбрать поля из А в класс B. Или же перегрузить оператор присваивания и тоже самое выполнить что и в конструкторе копирования. Но это будет 2 разных обьекта всёрогно, чтобы при изминения одного обьекте менялся и другой, то надо ещё доработать вот что:
1
|
Заблокирован
|
|
27.10.2014, 22:09 [ТС] | 10 |
Не по теме: Пока я рисую в пейнте весёлую картинку для объяснения... А как удалять тогда статик такой? Допустим мне нужен статик указатель на объект, как не его удалить корректно? Просто из любого экземпляра ? (это ж по сути глобальная переменная)
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
|
|
27.10.2014, 22:12 | 11 |
Сообщение было отмечено -THE_MASTER666- как решение
Решение
А зачем его удалять? Пусть сидит до закрытия программы.
Если надо удалять память, адресуемую этим указателем, то можно это делать откуда угодно. Хоть из экземпляра, хоть по имени класса.
1
|
Заблокирован
|
|
27.10.2014, 22:13 [ТС] | 12 |
а если я удалю объект класса А, как объект класса В узнает о том, что объект по тому указателю (что был в классе А - Int, который допустим удаляется деструкторе класса А) уже был удалён и не стоит по нему обращаться, дабы не поймать аксес виолейшен ?
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
27.10.2014, 22:17 | 13 | |||||
по сути она и есть
даже в памяти рядом с глобальными лежит просто с ограниченной видимостью
1
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
||||||
27.10.2014, 22:20 | 14 | |||||
Переписать класс так:
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
27.10.2014, 22:21 | 15 |
объект класса A это один объект
объект класса В это другой, в котором лежит объект класса А, так скажем подобъект и объект класса A ничего не знает про объект класса A который лежит в объекте класса В вот как они могут лежать в памяти A BA
1
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
|
27.10.2014, 22:21 | 16 |
/miss
1
|
Заблокирован
|
|
27.10.2014, 22:24 [ТС] | 18 |
То есть допустим, у меня есть класс А со статической переменной и есть класс В с другой статической переменной, тогда:
1. Из объекта класса А я ни при каких обстоятельствах не смогу нагадить в статическую переменную объектов класса В? 2. Статическая переменная класса В будет едина и доступна во всех объектах класс В, а так же в его наследниках, но никак не в родителях, верно же? То есть это как бы глобальная переменная с иерархией наследования?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
27.10.2014, 22:29 | 19 |
в результате в классе В будет видна и одна и другая, если конечно не защитишь
нет но наоборот сможешь, если конечно не защитишь эка ты загнул я честно говоря не понял
0
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
|
27.10.2014, 22:32 | 20 |
Ну он имел ввиду что это как бы глобальная переменная для всех классов которые будут наследоваться от родителя этой статической переменной.
0
|
27.10.2014, 22:32 | |
27.10.2014, 22:32 | |
Помогаю со студенческими работами здесь
20
Как передать параметры конструктора одного класса другому? Наследование: как передать массив одного класса другому классу? Удаление экземпляра класса в функции самого класса (Ошибка при отладке) Явное создание экземпляра класса и явная специализация шаблона класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |