Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Создание класса


Автор: Proximo_RZN 5.12.2004, 16:46
Такой текст:

class TEasyAnswer {
public:

void SetAnswer(UCHAR Ans);

void SetFormulation(TStrings Form);

UCHAR GetAnswer(void);

TStrings GetFormulation(void);
private:
UCHAR Answer;
TStrings Formulation;
};

При компиляции BCB5 говорит:
[C++ Error] ANSWERS.HPP(24): E2352 Cannot create instance of abstract class 'TStrings'
[C++ Error] ANSWERS.HPP(24): E2353 Class 'TStrings' is abstract because of '_fastcall TStrings::Get(int) = 0'
[C++ Error] ANSWERS.HPP(24): E2459 VCL style classes must be constructed using operator new

Как же тогда нужно создавать поле такого типа???
Добавлено @ 16:50
Сорри. Доперло в чем проблема.... Я просто сижу с температурой и бошка пухнет...


2 Admin: тему можно удалять. Мои извинения.

Автор: Vyacheslav 7.12.2004, 10:55
Во-первых: TStrings - абстрактны й класс и его объекты создавать нельзя. Нужно использовать производные от него классы, например - TStringList
Во-вторых: TStrings - производный от ТObject, т.е является VCL классом. А их экземрляры можно создавать только через new
Вот так пройдет
Код

class TEasyAnswer {
public:

void SetAnswer(UCHAR Ans);

void SetFormulation(TStrings Form);

UCHAR GetAnswer(void);

TStrings* GetFormulation(void);
private:
UCHAR Answer;
TStrings* Formulation;
};



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)