Класс и Visual C++6.0
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Доброе время суток!
Каким образом (самым простеньким) программно можно создать в Visual C++6.0 класс, самый элементарный? Желательно, как-то исходниками подскажите или псевдокодом.
Заранее благодарен! С уважением к участникам форума!!!
Каким образом (самым простеньким) программно можно создать в 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Romeo, это безусловно смешно, но мне нужно программно. Не усложнять сущности ... это верно. Тем не менее, просто необходимо, программно.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Если я тебя правильно понял, то это называется лямбдой
http://www.google.ru/search?hl=ru&q=C%2 ... Google&lr=
http://www.google.ru/search?hl=ru&q=C%2 ... Google&lr=
2B OR NOT(2B) = FF
Дорогой Absurd найди мне лямбду, что бы класс программно сделать. Первый раз такое слышу, к тому же там все по английски.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Найди мне язык, в котором вообще можно программно класс сделать.Дорогой Absurd найди мне лямбду, что бы класс программно сделать
В Java - нельзя. Анонимные классы там конечно есть, но создать именованный класс в рантайме там нельзя.
Нечто похожее на анонимные классы можно сделать при помощи ламбды.
Тебе надо на русском? А на свахили не хочешь? Или может на урду?Первый раз такое слышу, к тому же там все по английски.
2B OR NOT(2B) = FF
Absurd мне показалось ты обиделся на мой вопрос, извини. Вообще то он планировался с юмором, жаль не вышло. Это во-первых.
Во-вторых классы программно создают, кстати не так уж сложно (в ближайшее время мне не выйти на человека, который это знает). Хочешь, позже, когда узнаю как это делается, отпишу тебе?
Свахили и урду, я не знаю (к счастью). Владею немецким (в определенной степени).
Во-вторых классы программно создают, кстати не так уж сложно (в ближайшее время мне не выйти на человека, который это знает). Хочешь, позже, когда узнаю как это делается, отпишу тебе?
Свахили и урду, я не знаю (к счастью). Владею немецким (в определенной степени).
-
- Сообщения: 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
//Header file (*.h)
class CYourClass : public CObject
{
DECLARE_DYNCREATE(CYourClass);
//Your member variables
//Your member functions
}
//Implementation file
IMPLEMENT_DYNCREATE(CYourClass, <Родительский клас (В нашем случае СObject)>);
Примечание: Чтобы это сделать надо твой клас унаследовать от CObject или же от класов которые наследуют CObject
Все, що не робиться - на краще!
:!:
и
как раз таки и заполняют RTTI структуру для класса, а дальше в рантайм берем инфу из этой структуры и вызываем CreateObject() с приведением типа.
Это из МСДН ... смотри определение структуры CRuntimeClass.
Код: Выделить всё
DECLARE_DYNCREATE(CYourClass);
Код: Выделить всё
IMPLEMENT_DYNCREATE(CYourClass, CObject)
Код: Выделить всё
// 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();
Удачи... =)