2
Я пытаюсь создать расширенный класс из TADOQuery ниже, как.Как расширить класс от TADOQuery в C++ Builder?
Я добавил новый блок для проекта.
Unit2.h
#include <ADODB.hpp>
#ifndef Unit2H
#define Unit2H
#endif
class TExTADOQuery : public TADOQuery
{
typedef TADOQuery inherited;
public:
__fastcall virtual TExTADOQuery(Classes::TComponent* AOwner);
__fastcall virtual ~TExTADOQuery(void);
}
Unit2.cpp
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
, когда я компиляции получаю это сообщение об ошибке.
[C++ Error] Unit2.cpp (12): E2040 Декларация завершается неправильно
ADODB.hpp
class DELPHICLASS TADOQuery;
class PASCALIMPLEMENTATION TADOQuery : public TCustomADODataSet
{
typedef TCustomADODataSet inherited;
private:
Classes::TStrings* FSQL;
int FRowsAffected;
Classes::TStrings* __fastcall GetSQL(void);
void __fastcall SetSQL(const Classes::TStrings* Value);
protected:
void __fastcall QueryChanged(System::TObject* Sender);
public:
__fastcall virtual TADOQuery(Classes::TComponent* AOwner);
__fastcall virtual ~TADOQuery(void);
int __fastcall ExecSQL(void);
__property int RowsAffected = {read=FRowsAffected, nodefault};
__published:
__property CommandTimeout = {default=30};
__property DataSource ;
__property EnableBCD = {default=1};
__property ParamCheck = {default=1};
__property Parameters ;
__property Prepared = {default=0};
__property Classes::TStrings* SQL = {read=GetSQL, write=SetSQL};
};
Я не undertand, что PASCALIMPLEMENTATION.
Как я могу заявить правильно?
Это всегда происходит из-за запятой – Fatih
Кроме того, '# endif' находится не в том месте. Он должен быть в конце файла после объявления класса (иначе защита заголовка не имеет смысла). Кроме того, '#include' должен находиться внутри блока '#ifndef ... # endif'. Все в заголовке должно находиться внутри охранника. Вся точка защиты заголовка - это то, что все игнорируется при последующих включениях после того, как заголовок уже был включен один раз, иначе вы получите ошибки «множественного объявления» и т. Д. –