读书人

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

发布时间: 2013-07-21 21:55:43 作者: rapoo

这样子继承类居然不行,怪事
基类.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是很有必要的。

读书人网 >C++ Builder

热点推荐