C++Builder 程序员博客
1 Jul
下面是BCB中TThread的Synchronize的定义:
typedef void __fastcall (__closure *TThreadMethod)(void); … class DELPHICLASS TThread; class PASCALIMPLEMENTATION TThread : public System::TObject { … protected: … void __fastcall Synchronize(TThreadMethod Method); }
下面是我的类中的相关定义
class TMaxinThread : public TThread { public: typedef bool __fastcall (__closure *TMaxinThreadMethod)(void); __fastcall TMaxinThread(TMaxinThreadMethod method, char *threadName = NULL, bool bCreateSuspend = false); };
但是实际上进行初始化的时候.编译无法通过:
[C++ Error] MaxinEcho.cpp(51): E2285 Could not find a match for ‘TMaxinThread::TMaxinThread(void,char *)‘
为什么呢?
//————————————————————————— #pragma hdrstop #include "Unit2.h" #include <Classes.hpp> #include <Dialogs.hpp> //————————————————————————— #pragma package(smart_init) typedef bool __fastcall (__closure *TMaxinThreadMethod)(void); class TMaxinThread : public TThread { public: __fastcall void Execute(){TThread::Execute();} __fastcall TMaxinThread(TMaxinThreadMethod method, char *threadName = 0, bool bCreateSuspend = false); }; __fastcall TMaxinThread ::TMaxinThread(TMaxinThreadMethod method, char *threadName , bool bCreateSuspend ):TThread(bCreateSuspend) { ShowMessage("Contructor for TMaxinThread"); } class XXX :public TComponent { private: //线程循环 TMaxinThreadMethod ThreadLoop; __fastcall XXX::XXX(TComponent* Owner); friend class TMaxinThread; }; __fastcall XXX::XXX(TComponent* Owner) : TComponent(Owner) { TMaxinThread *pThread=0; pThread = new TMaxinThread(ThreadLoop, "MaxinEchoThread",false); //[C++ Error] MaxinEcho.cpp(51): E2285 Could not find a match for ‘TMaxinThread::TMaxinThread(void,char *)’ }
帮你修改了下,我个人觉得你的设计有点复杂,可以直接从TThread类派生嘛!