Привет, форумляне! Давно не писал - мучаюсь с С++... Довольно давно мучаюсь с этим вопросом и, как правило, все порывы наконец-то выяснить "что делать?" заканчиваются увиливанием от необходимости делать то, чего не знаю, т.е. изменением алгоритма. Но проблема остаётся. Вот она: Имеется класс. Делал сам. В процессе работы я его заполняю данными. Заполнение неслабое, т.к. работаю с DirectX и, сами понимаете, некоторые mesh'и так загружаются, что мало не покажется. Так вот, когда возникает нужда создать массив переменных моего класса, нельзя ли как-нибудь избежать повторной загрузки. Я делал так: dim Shablon as MyClass ' Объявляю set Shablon=new MyClass' Создаю FillShablon Shablon ' Заполняю ByRef ' И вот теперь хочу его просто скопировать dim mass(10) as MyClass,i as integer for i=0 to 10 set mass(i)=new MyClass set mass(i)=Shablon next i ' И вот, когда всё вроде бы проконало, начинаем работать с переменной Shablon.SomeProp=50 mass(2).SomeProp=34 mass(4).SomeProp=10 debug.print "----------------" debug.print mass(2).SomeProp debug.print Shablon.SomeProp debug.print "----------------" ' Так вот. В результате этих махинаций получаю: ---------------- 10 10 ---------------- Выходит так, что все мои mass'ы работают с одной областью в памяти. А как этого избежать? Заранее спасибо!!! P.S. Также было бы неплохо узнать можно ли как-то унаследовать свойства объекта (к примеру ListBox'а) и работать потом с ним отдельно - чтобы следы работы с новой переменной не отржались на оригинале: Dim lll As ListBox ' Объекта нет - только переменная Set lll = List1 lll.AddItem "dddd" ' В результате на List1'е появится "dddd"
Ответить
|