在CPropertyPage中传递友元类参数的有关问题
在CPropertyPage中传递友元类参数的问题
程序是使用MFC的对话框框架,创建了5个CPropertyPage对象CPro1~CPro5,还创建了CPropertySheet实例,使用向导模式:
CProSheet m_prosheet( "遗传算法优化神经网络 ");
m_prosheet.SetWizardMode();
m_prosheet.DoModal();
在CPro1中加入了
GAFrame *gf;
GAWeight *gw = new GAWeight();两个成员。
在CPro页面点“下一步”时执行gw-> GAStudy(nn);如下面代码:
LRESULT CPro1::OnWizardNext()
{
gw-> GetFrame(*gf)
return CPropertyPage::OnWizardNext();
}
gw已经被声明为nn的友元类了。
下面是GAStudy(nn)的代码:
void GAWeight::GetFrame(GAFrame gf)
{
for(int i=0;i <GFrameSize;i++)
{
weight[i].currentHLSize=gf.frame[i].currentHLSize;//执行到这步时出错!
weight[i].currentAllNodeSize=gf.frame[i].currentAllNodeSize;
}
}
在执行weight[i].currentHLSize=gf.frame[i].currentHLSize时会出现 unhandled exception in myGA.exe错误。
求高手帮忙解决啊,在线等
------解决方案--------------------
显然不是友员的问题了,因为它会引起的是编译错误,而你的是运行时错误。
怀疑你的数组越界啦~
------解决方案--------------------
如果一个变量很多个地方都要用到,可以考虑定义成全局变量。
程序是使用MFC的对话框框架,创建了5个CPropertyPage对象CPro1~CPro5,还创建了CPropertySheet实例,使用向导模式:
CProSheet m_prosheet( "遗传算法优化神经网络 ");
m_prosheet.SetWizardMode();
m_prosheet.DoModal();
在CPro1中加入了
GAFrame *gf;
GAWeight *gw = new GAWeight();两个成员。
在CPro页面点“下一步”时执行gw-> GAStudy(nn);如下面代码:
LRESULT CPro1::OnWizardNext()
{
gw-> GetFrame(*gf)
return CPropertyPage::OnWizardNext();
}
gw已经被声明为nn的友元类了。
下面是GAStudy(nn)的代码:
void GAWeight::GetFrame(GAFrame gf)
{
for(int i=0;i <GFrameSize;i++)
{
weight[i].currentHLSize=gf.frame[i].currentHLSize;//执行到这步时出错!
weight[i].currentAllNodeSize=gf.frame[i].currentAllNodeSize;
}
}
在执行weight[i].currentHLSize=gf.frame[i].currentHLSize时会出现 unhandled exception in myGA.exe错误。
求高手帮忙解决啊,在线等
------解决方案--------------------
显然不是友员的问题了,因为它会引起的是编译错误,而你的是运行时错误。
怀疑你的数组越界啦~
------解决方案--------------------
如果一个变量很多个地方都要用到,可以考虑定义成全局变量。