定义一个指向自定义类的指针数组遇到的问题
通过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++//用后加
[解决办法]
没分配内存