Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Фабрика объектов - обязательно требование приватности конструктора? (число прочтений - 1378 )
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Фабрика объектов - обязательно требование приватности конструктора?
18. Ноября 2009 :: 09:16
Печать  
В http://www.1cpp.ru/docum/html/extobjs.html в описании ФабрикиОбъектов

Цитата:
Если пытаемся создать объект, который является классом КОП 1С++, в модуле данного объекта должен быть определен метод-процедура с необходимым названием. Важно: процедура-конструктор должна быть определена без атрибута Экспорт.


Я правильно понимаю: если я раньше создавал объект как-то так
Об=СоздатьОбъект("МойОбъект");Об.Инит(1,2,3);
То для фабрики использовать "Инит" нельзя - нужно например создать процедуру, без Экспорт, которая этот Инит вызовет. Но это как-то некрасиво.

Или имеется в виду именно "Конструктор()" без экспорта?

А с чем связано это ограничение - было бы понятно, если б требовалось обратное, наличие Экспорта. А так -  Озадачен , если видим процедуры без экспорта, то уж с экспортом и подавно. Или это специально, чтобы "чего-то не того" не вызвали?
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
shmalevoz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 55
Зарегистрирован: 23. Апреля 2009
Re: Фабрика объектов - обязательно требование приватности конструктора?
Ответ #1 - 18. Ноября 2009 :: 09:46
Печать  
Необходимые методы инициализации можно вызывать из конструктора базового класса иерархии.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Фабрика объектов - обязательно требование приватности конструктора?
Ответ #2 - 18. Ноября 2009 :: 11:01
Печать  
alexqc писал(а) 18. Ноября 2009 :: 09:16:
В http://www.1cpp.ru/docum/html/extobjs.html в описании ФабрикиОбъектов

Цитата:
Если пытаемся создать объект, который является классом КОП 1С++, в модуле данного объекта должен быть определен метод-процедура с необходимым названием. Важно: процедура-конструктор должна быть определена без атрибута Экспорт.


А с чем связано это ограничение - было бы понятно, если б требовалось обратное, наличие Экспорта. А так -  Озадачен , если видим процедуры без экспорта, то уж с экспортом и подавно. Или это специально, чтобы "чего-то не того" не вызвали?

Это связано с тем, чтобы исключить двойной вызов конструкторов, т.к. создание объекта - это отдельная операция, и ее назначение отличается от прочих инициализаций.

ЗЫ можешь создать приватный метод типа _ИнитВнутр(), приватный КонструкторИнит() и публичный Инит(), который тупо вызывают этот _ИнитВнутр.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать