Наследование стандартных классов
У меня вопрос: пишу собственные классы в проекте,
Похвально, но начинай привыкать, собственно это и называется программированием.
но приходится иметь дело с конструкциями, которые уже давно разработаны - классом CFile и его потомками, CException (это из MFC). В связи с этим возник простой вопрос: что лучше использовать для этих целей: MFC, JAVA, NET (это вопрос общего плана),
Для каких целей?
И чо ты хотел спровить смешивая три совершенно несвязанные вещи:
MFC - библиотеку классов на С++,
Java - язык программирования,
NET - платформа.
и второй вопрос: если использовать MFC, можно ли создавать свои собственные классы на основе существующих или есть какие-либо ограничения.
Создавать можно, ограничения есть, например, нелбзя использовать множемтвенное наследование.
Похвально, но начинай привыкать, собственно это и называется программированием.
Для каких целей?
И чо ты хотел спровить смешивая три совершенно несвязанные вещи:
MFC - библиотеку классов на С++,
Java - язык программирования,
NET - платформа.
Создавать можно, ограничения есть, например, нелбзя использовать множемтвенное наследование.
Хорошо, какую библиотеку лучше использовать, создавая обычную Windows-программу на языке C++. Есть ли альтернатива MFC?
Хорошо, какую библиотеку лучше использовать, создавая обычную Windows-программу на языке C++. Есть ли альтернатива MFC?
Таких альтернатив множество.
Я использую WTL.
А в чем твоя проблема при использовании MFC?
Таких альтернатив множество.
Я использую WTL.
А в чем твоя проблема при использовании MFC?
Я пытаюсь создать класс исключения, который бы затем можно было бы затем обработать в блоке try-catch.
Класс должен хранить текстовую строку - сообщение об ошибке, и с помощью одного метода возвращать эту строку (чтобы затем, например, вывести ее на экран).
Такой класс я не нашел (ни в MFC, ни в библиотеки классов, которая есть в VC).
В MFC я нашел базовый класс CException, на основе которого создал свой класс CExceptionMsg.
{
DECLARE_DYNAMIC(CExceptionMsg)
private:
char* fmessage;
public:
CExceptionMsg(const char*mes);
CExceptionMsg(const char*mes, ...);
virtual ~CExceptionMsg();
}
CExceptionMsg::CExceptionMsg(const char*mes)
{
fmessage=(char*)malloc(strlen(mes)+1);
strcpy(fmessage, mes);
}
CExceptionMsg::CExceptionMsg(const char*mes,...)
{
char buffer[100];
va_list marker;
va_start(marker,mes);
vsprintf(&buffer[0],mes, marker);
va_end(marker);
fmessage=(char*)malloc(strlen(buffer)+1);
strcpy(fmessage, buffer);
}
CExceptionMsg::~CExceptionMsg()
{
free(fmessage);
}
Но при линковке появляется сообщение
unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CExceptionMsg::GetRuntimeClass(void)const "
Подозреваю, я не указал информацию о своем классе, но как это сделать? Ведь классы MFC можно использовать как базовые? Или я не прав?