Указатель на тип
От: Alexeus  
Дата: 18.05.06 12:37
Оценка:
С форумом пока не разобрался, так что не судите строго за некоректные коменты.

Судя по названию, это "class of" сильно напоминает оператор typeid. Результат typeid — объект класса type_info — хранит информацию о типе. Может быть использован, например, так:
// compile with: /GR
A* a = new A();
printf("%s", typeid(*a).name());
if (typeid(*a) == typeid(A))
{
//...
}

Про typeid знаю, пробовал но ничего путного из этого не получилось. Как мне кажется typeid совсем не для этих целей.



курить шаблоны проектирования: ФАБРИКА, ПРОТОТИП

Признатся из этой фразы ничего не понял. Как можно прикрутить шаблоны если после компиляции их уже не будет, этож статическая штука, а мне надо что я в рантайме мог передать какому нить классы тап тругого класса что бы первый его мог создать, о как !

Если я чего не понял, то объясните плз.
Re: Указатель на тип
От: Vovik1982 Россия  
Дата: 18.05.06 12:42
Оценка:
template <class T> class MyClass
{
.......
T *m_pT;
T m_T;
};
Re: Указатель на тип
От: valker  
Дата: 18.05.06 12:47
Оценка:
Здравствуйте, Alexeus, Вы писали:

A>курить шаблоны проектирования: ФАБРИКА, ПРОТОТИП


A>Признатся из этой фразы ничего не понял. Как можно прикрутить шаблоны если после компиляции их уже не будет, этож статическая штука, а мне надо что я в рантайме мог передать какому нить классы тап тругого класса что бы первый его мог создать, о как !


A>Если я чего не понял, то объясните плз.


1. лучше продолжать дискуссию в той же теме, а не открывать новую — разбирайся.
2. шаблоны проектирования (design patterns) — это НЕ ТО ЖЕ САМОЕ что шаблоны C++ (templates). ищи и читай вот эту книжку
Автор(ы): Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес
Издательство: Питер
Цена: 253р.

В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования
.
Posted using RSDN@HOME
Re: Указатель на тип
От: DigitalGuru Россия http://svetlyak.ru
Дата: 18.05.06 12:53
Оценка:
Здравствуйте, Alexeus, Вы писали:

A>курить шаблоны проектирования: ФАБРИКА, ПРОТОТИП


A>Признатся из этой фразы ничего не понял. Как можно прикрутить шаблоны если после компиляции их уже не будет, этож статическая штука, а мне надо что я в рантайме мог передать какому нить классы тап тругого класса что бы первый его мог создать, о как !


A>Если я чего не понял, то объясните плз.


class CommonInterface
{
public:
  virtual ~CommonInterface() {}
  // pure virtual methods
  virtual void doSomeThing() = 0;
};

class FactoryInterface
{
public:
   virtual ~FactoryInterface() {}
   virtual CommonInterface *createObject() const = 0;
};

template <class T>
class Factory : public FactoryInterface
{
    virtual CommonInterface *createObject() const
    { return new T(); }
};

class SomeClassThatWhanToCreateDifferentObjects
{
public:
    void useThisFactory( FactoryInterface *pFactory )
    { m_pFactory = pFactory; }

    void mainWorkingMethod()
    {
        // some work
        CommonInterface *pObject = pFactory->createObject();
        // do some thing with the object
        // ...
        // destroy the object
        delete pObject;
    }
private:
    FactoryInterface *m_pFactory;
};

class MyRealClass : public CommonInterface
{
// bla-bla-bla
};

int main()
{
    SomeClassThatWhanToCreateDifferentObjects app;
    Factory<MyRealClass> factory;
    app.useThisFactory( &factory );
    app.mainWorkingMethod();
    
    return 0;
}


Примерно так. Только лучше использовать какие-нибудь "умные указатели" для передачи прав владения фабрикой и создаваемыми объектами.
Re[2]: Указатель на тип
От: Alexeus  
Дата: 18.05.06 12:58
Оценка:
Здравствуйте, valker, Вы писали:

V>1. лучше продолжать дискуссию в той же теме, а не открывать новую — разбирайся.

V>2. шаблоны проектирования (design patterns) — это НЕ ТО ЖЕ САМОЕ что шаблоны C++ (templates). ищи и читай вот эту книжку
Автор(ы): Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес
Издательство: Питер
Цена: 253р.

В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования
.


Угу, роазберёмся. Я просто к phpBB привык.
Про (design patterns) и не слышал. Сейчас покапаюсь разберусь. Надеюсь это то что нужно.
Re[2]: Указатель на тип
От: Alexeus  
Дата: 18.05.06 13:03
Оценка:
Здравствуйте, DigitalGuru, Вы писали:

оверквотинг вырезан — Кодт
<...>
DG>Примерно так. Только лучше использовать какие-нибудь "умные указатели" для передачи прав владения фабрикой и создаваемыми объектами.


Гм ... всё гениальное просто. Пасиба
Re[2]: Указатель на тип
От: Ubivetz Украина  
Дата: 19.05.06 06:37
Оценка:
Здравствуйте, DigitalGuru, Вы писали:

DG>Здравствуйте, Alexeus, Вы писали:


A>>курить шаблоны проектирования: ФАБРИКА, ПРОТОТИП


A>>Признатся из этой фразы ничего не понял. Как можно прикрутить шаблоны если после компиляции их уже не будет, этож статическая штука, а мне надо что я в рантайме мог передать какому нить классы тап тругого класса что бы первый его мог создать, о как !


A>>Если я чего не понял, то объясните плз.


DG>
DG>class CommonInterface
DG>{
DG>public:
DG>  virtual ~CommonInterface() {}
DG>  // pure virtual methods
DG>  virtual void doSomeThing() = 0;
DG>};

DG>class FactoryInterface
DG>{
DG>public:
DG>   virtual ~FactoryInterface() {}
DG>   virtual CommonInterface *createObject() const = 0;
DG>};

DG>template <class T>
DG>class Factory : public FactoryInterface
DG>{
DG>    virtual CommonInterface *createObject() const
DG>    { return new T(); }
DG>};

DG>class SomeClassThatWhanToCreateDifferentObjects
DG>{
DG>public:
DG>    void useThisFactory( FactoryInterface *pFactory )
DG>    { m_pFactory = pFactory; }

DG>    void mainWorkingMethod()
DG>    {
DG>        // some work
DG>        CommonInterface *pObject = pFactory->createObject();
DG>        // do some thing with the object
DG>        // ...
DG>        // destroy the object
DG>        delete pObject;
DG>    }
DG>private:
DG>    FactoryInterface *m_pFactory;
DG>};

DG>class MyRealClass : public CommonInterface
DG>{
DG>// bla-bla-bla
DG>};

DG>int main()
DG>{
DG>    SomeClassThatWhanToCreateDifferentObjects app;
DG>    Factory<MyRealClass> factory;
DG>    app.useThisFactory( &factory );
DG>    app.mainWorkingMethod();
    
DG>    return 0;
DG>}
DG>


DG>Примерно так. Только лучше использовать какие-нибудь "умные указатели" для передачи прав владения фабрикой и создаваемыми объектами.

На СОМ сильно смахивает
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.