![]() |
|
Модераторы: Akina |
![]()
|
|
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
не нашёл такого в мсдн (вроде как такого в vb6 нет)
у кого-нибудь есть светлые идеи, как это реализовать средствами языка? --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Светлые идею появятся сразу, как только будет ясно что такое конструктор копирования.
Ты просвети нас. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
в C++ есть такое понятие как "конструктор копирования"
т.е. при присваивании объекту А объекта Б копируется не ссылка а копия объекта Б (причём создаётся эта копия автоматически) --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ну мы С++ не изучали...
Если говорить о рантайм, то посмотри инструкции ByVal и ByRef. Если времени разработки - то я не понял вопроса. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
рантайм
пример использования:
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Мда...
Интересный вопрос. Будем думать. -------------------- Я желаю всем Счастья! |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Подумал я пришел к выводу что стандартными и известными мне нестандартными способами этого не решить.
Вопрос: ты работаеш с самописными классами? т.е. нужно создать копию своего класса? Со своим классом решение есть. С чужим - только ручками. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
со своим, я про это же и спрашиваю --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Решение опять-же Ручками, но случай тут частный, так как известна вся подноготная класса.
Создай в классе функцию создания копии. Ну например так:
-------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
я же спрашиваю про неявное копирование, явное - ясное дело - очевидно...
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Да я понимаю.
Но с неявным копированием напряг. -------------------- Я желаю всем Счастья! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Имхо конструктор копирования применяется, когда мы создаем свой собственный объект (а в ВБ все объекты уже готовы - все остается только на совести разработчиков), одним из полей которого является указатель на тип. Если не создать КК, будет утечка памяти, если нет КК компилятор сам его создаст, но тоже будет утечка памяти.
Оффтоп: долго не мог понять по названию темы: я в С++ или в... -------------------- i_i (';') (V) ![]() |
|||
|
||||
| JUmPER |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
родил-таки я =)
правда кривовато, но бейсик лучше это сделать не даёт сам класс:
демострация
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
JUmPER, это не есть решение. Это но копирование класса. Это задание одного единственного свойства по умолчанию в момент инициализации.
Это совсем не то о чем вы спрашивали. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
наоборот, это и есть неявное создание нового экземпляра класса при копировании, что собственно и требовалось
т.е. после присвоения существуют два независимых экземпляра --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Новый экземпляр класса у тебя есть еще на стадии обьявления переменных.
Идея твоего вопроса заключалась в следующем. Создавался Класс1. Его свойства были заданы. На его основе создается Класс 2. На этом этапе, значения свойств класса 2 идентичны значениям класса 1. Экземпляры не связаны. Тоесть при изменении значения свойства в классе 1, значение в классе 2 не изменяется. Вот это и есть то, что в С++ называется конструктор копирования. Это сообщение отредактировал(а) Naghual - 21.11.2006, 11:59 -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
ну да, это и происходит в моём примере
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
нет. не происходит.
добавь в класс любое свойство и проверь. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
у нас же есть св-во "name" собственно оно для проверки и есть
msgbox выдаёт два различных значения для него... --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Name ты переназначаеш при операции присвоения. Оно не показательно, так-как самозаполняется при инициализации. Оно не копируется из первого класса.
Серьезно. Добавь классу еще одно свойство и проверь. Это сообщение отредактировал(а) Naghual - 21.11.2006, 12:17 -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
тут дело не в "самокопировании", а именно в создании копии при присвоении
а то, что это полностью реализуется руками разработчика класса -- так это из-за самого бейсика а в "Let" можно задать и остальные поля --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Тогда я вообще не вижу смысла в данной теме, так как на лицо явное копирование значений! -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
явное копирование внутри класса, а снаружи это выглядит как конструктор копирования, что собственно и требовалось
"то что снаружи выглядит как нечто, и есть это нечто" --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ок. Покажи пример на своем же примере. -------------------- Я желаю всем Счастья! |
|||
|
||||
| JUmPER |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ясно. Убедил.
-------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |