Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Возможен ли класс определяющий сам создан ли он на стеке
Форум на CrossPlatform.RU > Разработка > Инструменты разработчика
SABROG
Кстати может оффтопик, но такой вопрос сегодня назрел. А возможно ли создать класс таким образом, чтобы компилятор ругался, если экземпляр этого класса пытаются создать на стеке, а не на куче через new?
ViGOur
Мне кажется проще будет сделать сам класс так, чтобы обязать программера создавать его экземпляры на куче.
kwisp
Цитата(ViGOur @ 24.10.2009, 14:40) *
Мне кажется проще будет сделать сам класс так, чтобы обязать программера создавать его экземпляры на куче.

ну да это не сложно
допустим класс А нужно обязательно создавать в куче.
делаем ему все конструкторы private и делаем ему друга ACreator который имеет статические функции Init() для каждого конструтора А создаем в инит в куче А и возвращаем указатель.

можно эти статические функции прямо в А и засунуть кстаити. но в книженции одной хвалили способ с 2 классами.

можно посмотреть классы smart-pointer`ов они на подобии делаются... может что нибудь удастся использовать.
zamnach
+к вышесказанному: есть так называемые compile_time_assert,
описанные в книге Александреску "Как я тр@хнул ежика"
"Современное проектирование на C++"
с помощью них можно организовать ругань компилера при вызове конструктора без new.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.