创建两个最简单的窗体Form1,Form2

sincostan 2002-06-29 07:51:25
创建两个最简单的窗体Form1,Form2. Form1上有一个按钮Button1,点击Button1弹出Form2,一切都默认时正常(就象BCB自带的例子)
当我把Form2的构造函数里添加一个int参数时 ,就报EStackOverflow异常,不能运行.在BCB自带的例子里添加也是这种错误,真奇怪!

Unit1.cpp
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2(this,1);
Form2->ShowModal();
delete Form2;
}
==========================================================
Unit2.h
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
int iChannelNum;//添加这个
__fastcall TForm2(TComponent* Owner,int nChannelNum/*添加这个*/);
};

extern PACKAGE TForm2 *Form2;
============================================================
Unit2.cpp
TForm2 *Form2;
__fastcall TForm2::TForm2(TComponent* Owner,int nChannelNum)
: TForm(Owner)
{
iChannelNum = nChannelNum; //初始化
}



//另外,我P4 1.4G的机器,Win2k Professional,资源浏览器中刷新一个窗口竟然用大约3秒钟的时间,而且刚装机器不久,没装网卡,单机使用,应该不会有病毒。怎么刷新这么慢,还不如老机器

...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whitelion 2002-06-30
  • 打赏
  • 举报
回复
内存太小了,加内存
sincostan 2002-06-30
  • 打赏
  • 举报
回复
这几天一直这样 , 我没放光盘也这样
sterrys 2002-06-29
  • 打赏
  • 举报
回复
我装了一个Norton的杀毒软件(正版的),结果搞得资源管理器察看文件非常慢,后来把这个杀毒软件卸载了就好了 :(
耙子 2002-06-29
  • 打赏
  • 举报
回复
资源浏览器刷新的可能和你光驱里面有盘有关系,拿出来光盘看看。不能不会这么慢。
sincostan 2002-06-29
  • 打赏
  • 举报
回复
学到了东西!
感谢大家!
ThinkX 2002-06-29
  • 打赏
  • 举报
回复
pazee(耙子) 说的很对,我也遇到过这种情况,
确实有一个相同声明的构造函数。
jishiping 2002-06-29
  • 打赏
  • 举报
回复
重新Build好像就可以了(不是Make)。
耙子 2002-06-29
  • 打赏
  • 举报
回复
这个问题我遇到过,经过单步跟踪,发现原因是 TForm有个构造函数的原型和你的一样,也是
__fastcall TForm::TForm(TComponent* ,int);
我忘了他是个虚函数还是动态函数来着,

你调用了你的狗在函数之后他又会调用,他自己的,他自己的又调用了你的。变成了间接递归了,所以肯定堆栈溢出了。

简单的解决办法就是把你的构造函数避免和他同型,加一个没用的参数吧。

比如:
__fastcall TForm2(TComponent* Owner,int nChannelNum, int nType);

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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