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

定义一个指向自定义类的指针数组遇到的有关问题

2012-05-22 
定义一个指向自定义类的指针数组遇到的问题通过classWizard定义了一个基于generic CWnd的自定义类CBasketB

定义一个指向自定义类的指针数组遇到的问题
通过classWizard定义了一个基于generic CWnd的自定义类CBasketBuffer,只有成员变量如下:
public:
  long m_basketids; 
longm_orderid;
CStringm_goodsname;
longm_goodsId;
longm_counts;
CStringm_unit;
CStringm_unitprice;
CStringm_rebate;
构造函数析构函数都没有重载,在CSHOPDlg类里面添加该类头文件后定义了一个指向CBasketBuffer类的指针数组
CBasketBuffer* basketbuffer[256];然后在CSHOPDlg类的成员函数中对指针数组赋值,如下:
  for (buygoodsnum=0;buygoodsnum<256;++buygoodsnum)
{
if (td_basketset->IsBOF())
{
basketbuffer[buygoodsnum]->m_goodsname= "test"; //无法赋值
basketbuffer[buygoodsnum]->m_basketids = 10000; //无法赋值

else
{
basketbuffer[buygoodsnum]->m_basketids = td_basketset->m_ids+1;
}
td_goodsset->Move(number);  
td_orderformset->MoveLast();
basketbuffer[buygoodsnum]->m_orderid= td_orderformset->m_OrderId+1;
basketbuffer[buygoodsnum]->m_goodsname= td_goodsset->m_Name; 
basketbuffer[buygoodsnum]->m_goodsId= td_goodsset->m_GoodsId;
basketbuffer[buygoodsnum]->m_counts= m_counts;
basketbuffer[buygoodsnum]->m_unit= td_goodsset->m_Unit;
basketbuffer[buygoodsnum]->m_unitprice= td_goodsset->m_Saleprice;
basketbuffer[buygoodsnum]->m_rebate= td_goodsset->m_Rebate;
}
编译没出错,运行时有问题,经调试发现这个指针数组无法被赋值,调试信息如下:
basketbuffer[buygoodsnum]->m_goodsname 值为{???}
basketbuffer[buygoodsnum]->m_basketids = 10000; 值为CX0030:Error expression cannot be evaluated
其余的变量类型为CString的,值都跟第一行的信息一样,类型为Long的其值都跟第二行的信息一样,希望大家给予帮助,谢谢了!


[解决办法]
指针数组没有初始化吧,还有好像也没有分配内存,这种情况,你可以
定义一个数组
CBasketBuffer[256];
然后定义一个指向该数组的指针 CBasketBuffer *pBskBuf=CBasketBuffer;

[解决办法]
你这个代码定义了指针数组,而提供的代码中,只有赋值,但并没有看到指针的创建
[解决办法]
1.CBasketBuffer* basketbuffer[256];
2 for (buygoodsnum=0;buygoodsnum<256;++buygoodsnum)
buygoodsnum++//用后加

[解决办法]
没分配内存

热点排行