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

函数传值有关问题

2013-01-02 
函数传值问题结构体定义TParam{double f1double f2}预调用的类定义头文件class TPortConfig{public:Loa

函数传值问题


结构体定义
TParam
{
   double f1;
   double f2;
};

预调用的类定义
头文件
class TPortConfig
{
public:
   LoadFromFile();
   __property TParam Param = {read=m_Param,write=m_Param};
protected:
   TParam m_Param;  
};
执行部分
#include "PortConfig.h"
TPortConfig::LoadFormFile()
{
   m_Param.f1 = 2.1;
   m_Param.f2 = 1.8;
}

其他地方调用:
#include "PortConfig.h"
TXXDlg::Test()
{
  TParam Param;
  TPortConfig *Config = new TPortConfig();
  Config->LoadFromFile();//程序可以进行到该步,并且Config有值;当进行下一步时,Config值为???,并且报错
  Param = Config->Param;
}

但是在其他窗体中调用时可以正常返回值信息。百思不得其解,望高手解惑,谢谢。
[解决办法]
声明一个结构并不分配内存,内存分配发生在定义这个新数据类型的变量中
[解决办法]
除了这句TPortConfig::LoadFormFile() 中的From写成了Form 还真没看出啥问题
[解决办法]
执行完LoadFormConfig()函数后,类指针的值就会变为???

這有可能是越界。检查一下LoadFormConfig()中的行为。

TPortConfig *Config = new TPortConfig();
TPortConfig * A = Config; 
LoadFormConfig();
TPortConfig * B = Config; 
if(A != B)
  ShowMessage("执行函数LoadFormConfig导致越界");//

热点排行