2015-12-30 40 views
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。

我怎樣才能申報是否正確?

回答

1

我忘記了分號。

class TExTADOQuery : public TADOQuery 
{ 
    typedef TADOQuery inherited; 
    public: 
    __fastcall virtual TExTADOQuery(Classes::TComponent* AOwner); 
    __fastcall virtual ~TExTADOQuery(void); 
}; 
+1

它總是因分號而發生 – Fatih

+1

另外,'#endif'位置不對。它應該在文件的末尾,在類聲明之後(否則頭部守衛是沒有意義的)。另外,'#include '也應該在'#ifndef ...#endif'塊中。標題中的所有內容都應該放在警衛之內。標題後衛的全部內容都是在標題已包含一次之後,隨後的所有內容都將被忽略,否則最終會出現「多重聲明」等錯誤。 –