首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

这么子继承类居然不行,怪事

2013-07-21 
这样子继承类居然不行,怪事基类.hclass TJs_Base : public TThread{private:protected:void __fastcall Ex

这样子继承类居然不行,怪事
基类.h
class TJs_Base : public TThread
{
private:
protected:
        void __fastcall Execute();
public:
        __fastcall TJs_Base(bool CreateSuspended,
                           );
        static TJs_Base * CreateJs(int nID);   //初始化计算类
};

基类CPP
__fastcall TJs_Base::TJs_Base(bool CreateSuspended
                              )
        : TThread(CreateSuspended)
{
}
TJs_Base * TJs_Base::CreateJs(int nID)
{
  switch (nID)
  {
    case 0: 
    pJs_Math = new TJs_Qd; //这里出错  其中 pJs_Math是在外部 声明的变量  TJs_Base *pJs_Math; 
    break;
    default:
     return NULL;
  }
  return pJs_Math;
}
//------------------

子类TJs_Qd .h
class TJs_Qd : public TJs_Base
{
  public:
    //声明的函数
  protected:
};

子类 TJs_Qd .cpp

出错提示
[C++ Error] Js_Base.cpp(90): E2125 Compiler could not generate default constructor for class 'TJs_Qd'




以上头文件都已经包含了
如果基类TJs_Base不继承线程就没有任何问题,请问要怎么做?
[解决办法]

pJs_Math = new TJs_Qd; //这里出错  其中 pJs_Math是在外部 声明的变量  TJs_Base *pJs_Math; 
改为:

 pJs_Math = new TJs_Qd(false); 


错误提示不是很清楚了吗。
[解决办法]
class TJs_Qd : public TJs_Base
{
  public:


    //声明的函数
  TJs_Qd(bool CreateSuspended):TJs_Base(CreateSuspended){} //写上构造函数。
  TJs_Qd():TJs_Base(false){} //写上构造函数。
  protected:
};
//上面那样处理后,就可以这样用了:
pJs_Math = new TJs_Qd;

其实不建议这样做。线程类构造函数多一个参数CreateSuspended是很有必要的。

热点排行