Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Инструменты разработчика _ Возможен ли класс определяющий сам создан ли он на стеке

Автор: SABROG 23.10.2009, 23:03

Кстати может оффтопик, но такой вопрос сегодня назрел. А возможно ли создать класс таким образом, чтобы компилятор ругался, если экземпляр этого класса пытаются создать на стеке, а не на куче через new?

Автор: ViGOur 24.10.2009, 13:40

Мне кажется проще будет сделать сам класс так, чтобы обязать программера создавать его экземпляры на куче.

Автор: kwisp 24.10.2009, 14:12

Цитата(ViGOur @ 24.10.2009, 14:40) *
Мне кажется проще будет сделать сам класс так, чтобы обязать программера создавать его экземпляры на куче.

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

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

можно посмотреть классы smart-pointer`ов они на подобии делаются... может что нибудь удастся использовать.

Автор: zamnach 30.3.2010, 18:22

+к вышесказанному: есть так называемые compile_time_assert,
описанные в книге Александреску "Как я тр@хнул ежика"
"Современное проектирование на C++"
с помощью них можно организовать ругань компилера при вызове конструктора без new.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)