![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
featZima |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
Подскажите как определить указатель на функцию конструктор... Что-нибудь вроде такого:
p.s. хотелось бы получить указатель на функцию-конструктор данных объектов, то есть чтобы можно было потом делать так:
Это сообщение отредактировал(а) featZima - 12.9.2010, 23:41 |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
поясни...
тебе нужен объект boost::function возвращающий указатель? или указатель на объект boost::function возвращающий указатель? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
featZima, конструктор не создает объекты, он их инициализирует. Создает же оператор new (или автоматически в стеке). Поэтому тебе нужно сделать функцию, которая бы создавала объекты с помощью new. Кстати, я бы рекомендовал в этом случае еще использовать boost::shared_ptr... Чтобы хлопот было меньше.
|
|||
|
||||
featZima |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.8.2008 Где: Украина, Харьков Репутация: нет Всего: нет |
Вариант с дополнительной функцией вполне работает, но хотелось бы покороче )
Это сообщение отредактировал(а) featZima - 13.9.2010, 00:28 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
На конструктор нельзя получить указатель. Существует понятие "виртуальный конструктор", так это примерно то, что ты нарисовал, т.е. некоторая функция, которая умеет создавать и инициализировать объекты заданного класса\иерархии. Вместо бустовых оберток можно использовать "обычные" указатели на функции (это ведь чаще всего глобальная функция или статическая). Это слегка быстрее, но все зависит от задачи. Если нужна универсальность сигнатур, то через буст (т.к. в function можно и метод класса, и статическую функцию с параметрами и прочая запихнуть). А если универсальность не нужна - обычный указатель сойдет. Но в любом случае отдельная функция нужна. Если сильно влом писать три строчки кода на класс, то можно соорудить макрос или шаблон. -------------------- ... |
|||
|
||||
icecrashldr |
|
|||
![]() Developer ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 5.7.2010 Репутация: нет Всего: нет |
"виртуальный конструктор" -> называет "именованный конструктор", либо же строитель(фабрика).
featZima, НА что именно вы хотите получить указатель? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |