这个class的析构函数该如何写?

WiseNeuro 2005-06-02 11:42:43
我写了个继承于TObject的class,但编译时除了错:[C++ Error] E2113 Virtual function 'CAtomData::~CAtomData()' conflicts with base class 'TObject', 不知该如何解决,请大家赐教。class如下:

class CAtomData:public TObject{
public:
AnsiString *Name ;
AnsiString *Type ;
AnsiString *Value ;
CAtomData():TObject()
{
Name = new AnsiString() ;
Type = new AnsiString() ;
Value = new AnsiString() ;
}
CAtomData(const AnsiString &name, const AnsiString &type, const AnsiString &value)
:TObject()
{
Name = new AnsiString(name);
Type = new AnsiString(type) ;
Value = new AnsiString(value) ;
}
virtual ~CAtomData()
{
delete Name ;
delete Type ;
delete Value ;
}
};
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
过客猫2022 2005-06-03
  • 打赏
  • 举报
回复
其实加不加virtual结果都是一样的!
因为TObject的析构函数是virtual的!
还有,你记得要包含头文件!一般你默认包括<vcl.h>就可以了:)
WiseNeuro 2005-06-03
  • 打赏
  • 举报
回复
谢谢!在析构函数前面加上__fastacall就好了。
Joe 2005-06-03
  • 打赏
  • 举报
回复
刚才试了一下,好象virtual也不能加,不知道为什么。
====
*.h

class CFamily : public TObject
{
private:
AnsiString FatherName;
public:
CFamily(AnsiString MyFatherName);
_fastcall ~CFamily();
void ShowFatherName(void);
};

====
*.cpp

CFamily::CFamily(AnsiString MyFatherName): TObject()
{
FatherName = MyFatherName;
}

_fastcall CFamily::~CFamily()
{

}

void CFamily::ShowFatherName(void)
{
ShowMessage(FatherName);
}
这样看起来是可以了。
jhzhao2002 2005-06-03
  • 打赏
  • 举报
回复
virtual 去掉。
过客猫2022 2005-06-03
  • 打赏
  • 举报
回复
从TObject派生下来的子类的析构函数,要有__fastcall
你在前面加上:
下例:
class A
{
public:
virtual __fastcall ~A();
}
这就可以了!
Joe 2005-06-03
  • 打赏
  • 举报
回复
我记得有些书上讲过:所有的VCL控件都派生于TObject类,它是顶级类。
F117p 2005-06-02
  • 打赏
  • 举报
回复
虚拟函数'CAtomData::~CAtomData()' 与基类发生冲突,
虚拟析构函数,不是很清楚
不过牵涉刀VCL建议前边加:__fastcall关键字

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧