Здравствуйте, Edge, Вы писали:
E>Всем привет
E>Захотелось запретить объявление объекта класса через
E>E>...
E>CClassName obj; //так нельзя
E>...
E>
E>При этом мне хочется чтобы можно было использовать только динамическое создание обьекта
E>E>...
E>CClassName *obj = new CClassName;
E>...
E>
E>Причем чтобы ошибки отлавливались при компиляции...
E>Спасибо за внимание
Следует объявить конструктор защищенным и предоставить функцию создания объекта динамически :
class a
{
public:
static a* create() { return new a; }
protected:
a(){}
};
int main()
{
a* p = a::create(); // OK
a x; // Error
}