|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.10.2012, 04:23 | #1 |
Пользователь
Регистрация: 30.07.2012
Сообщений: 13
|
Передача аргументов в фабрику объектов
Здраствуйте. У меня следующая задача: необходимо написать приложение, в котором пользователь может создавать различные графические фигуры. При создании конкретной фигуры пользователь задает ее размеры. Для удобства создания объектов и добавления новых классов фигур я хочу использовать фабрику объектов. При этом все графические объекты объединяются абстрактным классом и регистрируются в фабрике. Рассмотрим пример из трех фигур: Rectangle, Triangle и Circle, которые наследуют абстрактный класс Shape2d:
Код:
Как в таком случае зарегестрировать эти классы в одной фабрике, чтобы можно было cоздавать объекты, передавая список необходимых аргументов, различный для каждого класса? Каким образом можно реализовать подобные конструкции? Код:
|
11.10.2012, 10:45 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Никак... ну не совсем никак, но сложно и ненужно.
Но можно сделать фабрику с различными Create методами - CreateCircle, CreateTriangle и т.д. |
11.10.2012, 15:07 | #3 |
Пользователь
Регистрация: 30.07.2012
Сообщений: 13
|
"Не совсем никак" это как?
Тогда для добавления нового класса в фабрику необходимо будет изменять код самой фабрики, добавляя в нее новый метод. Вроде как, именно от этих проблем должна избавлять фабрика. |
11.10.2012, 15:55 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Ну например вы делаете union из структур для каждого типа объекта. При
создавании объекта передаем едакий универсальный параметр. Там внутри можно даже тип указывать. Правда при добавлении нового типа надо будет добавлять новые структуры но что делать... А вообщето может стоит вынести инициализацию в полученный объект. Создаете объект по имени типа, потом делаете dynamic_cast до нужного интерфейса и вызываете нужные методы с нужными параметрами. |
11.10.2012, 16:37 | #5 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
Цитата:
Остаётся вопрос как передать различные аргументы. Можно воспользоваться контейнерами stl. Тем же вектором: аргументы всё равно все типа int. Но тогда нет гарантии что пользователь введёт правильные аргументы...
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача в функцию переменного кол-ва аргументов РАЗНЫХ типов | stranger84 | Общие вопросы C/C++ | 17 | 18.07.2012 15:38 |
Передача аргументов в функции по ссылке | skanku | Общие вопросы C/C++ | 2 | 11.01.2012 21:24 |
Передача в функцию неограниченного количества аргументов | pronaks | Общие вопросы C/C++ | 4 | 13.12.2011 22:54 |
Передача аргументов в функцию. C++ | Kholmansky | Помощь студентам | 2 | 15.09.2011 01:02 |
Передача аргументов программе на Си, как реализовать? | cympak | Общие вопросы C/C++ | 6 | 02.03.2010 19:49 |