Класс и Visual C++6.0

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Доброе время суток!

Каким образом (самым простеньким) программно можно создать в Visual C++6.0 класс, самый элементарный? Желательно, как-то исходниками подскажите или псевдокодом.

Заранее благодарен! С уважением к участникам форума!!!
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

ClassView -> правый клик на проекте -> Add new class
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Romeo, это безусловно смешно, но мне нужно программно. Не усложнять сущности ... это верно. Тем не менее, просто необходимо, программно.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Если я тебя правильно понял, то это называется лямбдой
http://www.google.ru/search?hl=ru&q=C%2 ... Google&lr=
2B OR NOT(2B) = FF
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Дорогой Absurd найди мне лямбду, что бы класс программно сделать. Первый раз такое слышу, к тому же там все по английски.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Дорогой Absurd найди мне лямбду, что бы класс программно сделать
Найди мне язык, в котором вообще можно программно класс сделать.
В Java - нельзя. Анонимные классы там конечно есть, но создать именованный класс в рантайме там нельзя.
Нечто похожее на анонимные классы можно сделать при помощи ламбды.
Первый раз такое слышу, к тому же там все по английски.
Тебе надо на русском? А на свахили не хочешь? Или может на урду?
2B OR NOT(2B) = FF
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Absurd мне показалось ты обиделся на мой вопрос, извини. Вообще то он планировался с юмором, жаль не вышло. Это во-первых.
Во-вторых классы программно создают, кстати не так уж сложно (в ближайшее время мне не выйти на человека, который это знает). Хочешь, позже, когда узнаю как это делается, отпишу тебе?
Свахили и урду, я не знаю (к счастью). Владею немецким (в определенной степени).
Marjan
Сообщения: 27
Зарегистрирован: 25 авг 2004, 15:28
Откуда: Україна, Львів
Контактная информация:

Давай разберемся. Тебе надо создать програмно клас или обьект класа? Если обьект то это делаеться с помощью RTTI (Run Time Type Information). Чтобы класс поддержывал RTTI надо сделать так:
//Header file (*.h)
class CYourClass : public CObject
{
DECLARE_DYNCREATE(CYourClass);
//Your member variables
//Your member functions
}
//Implementation file
IMPLEMENT_DYNCREATE(CYourClass, <Родительский клас (В нашем случае СObject)>);
Примечание: Чтобы это сделать надо твой клас унаследовать от CObject или же от класов которые наследуют CObject
Все, що не робиться - на краще!
Acidy
Сообщения: 23
Зарегистрирован: 19 окт 2004, 10:40
Откуда: хз
Контактная информация:

:!:

Код: Выделить всё

DECLARE_DYNCREATE(CYourClass);
и

Код: Выделить всё

IMPLEMENT_DYNCREATE(CYourClass, CObject)
как раз таки и заполняют RTTI структуру для класса, а дальше в рантайм берем инфу из этой структуры и вызываем CreateObject() с приведением типа.

Код: Выделить всё

// This example creates an object from the run-time class. It only 
// creates objects derived from CWnd.

// We only want to create an object derived from CWnd.
if (!pClass->IsDerivedFrom(RUNTIME_CLASS(CWnd)))
{
   TRACE(_T("Error; Object %s is not derived from CWnd\n"));
   return;
}

// Get a pointer to the base class CRuntimeClass.
#ifdef _AFXDLL
   CRuntimeClass* pBaseClass = pClass->m_pfnGetBaseClass();
#else
   CRuntimeClass* pBaseClass = pClass->m_pBaseClass;
#endif
ASSERT(pBaseClass != NULL);

TRACE(_T("Creating object %s derived from %s, with object size %d 
   and schema %d\n"), pClass->m_lpszClassName, 
   pBaseClass->m_lpszClassName, pClass->m_nObjectSize, 
   pClass->m_wSchema);

// Create the object.
CObject* pObject = pClass->CreateObject();
Это из МСДН ... смотри определение структуры CRuntimeClass.
Удачи... =)
Ответить