Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Class declaration

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
DPisarciuc



Зарегистрирован: 23.05.2003
Сообщения: 17

СообщениеДобавлено: Чт Июн 26 2003 15:35    Заголовок сообщения: Class declaration Ответить с цитатой

Hello!

How to declare a class, which can have only dynamic instances?

Thanks.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Чт Июн 26 2003 16:12    Заголовок сообщения: Re: Class declaration Ответить с цитатой

Very simply

class dynamic {
public:
    dynamic ();
    ~dynamic ();
};
Вернуться к началу
DPisarciuc



Зарегистрирован: 23.05.2003
Сообщения: 17

СообщениеДобавлено: Чт Июн 26 2003 17:35    Заголовок сообщения: Re: Class declaration Ответить с цитатой

Niujeli tak trudno poneati suti voprosa? Ili tebe lij-by chito-to otvetiti? Prejde chem otvetiti - chitai vopros i otvechiai po suti a ne sory forum...

Obiasniaiu suti voprosa:
nado obiaviti ClassA tak chito-by:

ClassA a; // compiler error!!!
ClassA* pA = new ClassA(...); // ok
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость





СообщениеДобавлено: Чт Июн 26 2003 18:06    Заголовок сообщения: Виноват, я понял иначе (+) Ответить с цитатой

Я понял "динамическая" == "не занимающая память при компиляции". Твой вариант, наверное, может быть таким (я не проверял, но думаю, копать здесь):

class ClassA {
private|protected:
    ClassA();
&n bsp;   ...
public:
     ~ClassA();
    ...
friend int CreateClassA();
};

и переопределить оператор new для класса ClassA так, чтобы new ClassA() вызывал функцию CreateClassA().

Извинения приняты? Smile
Вернуться к началу
Sclis
Гость





СообщениеДобавлено: Пт Июн 27 2003 05:56    Заголовок сообщения: Re: Виноват, я понял иначе (+) Ответить с цитатой

наверно, сам класс должен быть абстрактным...
создать экземпляр абстрактного класса нельзя.
создавать его надо в фабрике класов. (вернее даже не его, а конкретного потомка от него)

class classA; abstract
-----------
class FabricA{
class classAA(classA){
...};
classA* createNew();
...
-----------
FabricA::createNew(){
retur n new classAA
}

хотя, я конечно могу и ошибаться...
Вернуться к началу
Алексей
Гость





СообщениеДобавлено: Сб Июн 28 2003 07:13    Заголовок сообщения: Re: Class declaration Ответить с цитатой

Можно объявить закрытый деструктор, но при этом оставить открытыми контструкторы. В этом случае для удаления вместо delete придется использовать специальную функцию, которая и будет вызывать delete.

class A
{
public:
A();
void free ( A* a ) { delete a; }
private:
~A();
};
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...