2
我想從下面的TADOQuery創建擴展類。如何從C++ Builder中的TADOQuery擴展一個類?
我已經添加了新單元項目。
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++錯誤] 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'塊中。標題中的所有內容都應該放在警衛之內。標題後衛的全部內容都是在標題已包含一次之後,隨後的所有內容都將被忽略,否則最終會出現「多重聲明」等錯誤。 –