VC++Cobarray问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:38:43
class __declspec(dllexport) YuBaoInput : public CObject
{
DECLARE_SERIAL(YuBaoInput)
public:
YuBaoInput();
virtual ~YuBaoInput();
void Serialize(CArchive& ar);

public:
int nCSID;//电站号
COleDateTime dBEGTIME;//预报开始时间
COleDateTime BEGTIME;//预报因子起始时间
COleDateTime ENDTIME;//预报因子序列结束时间
CObArray yinzi;//预报因子

};
extern __declspec(dllexport) void LongForcast(YuBaoInput *m_pa);
#endif

/*............................*/
double x[9];
extern __declspec(dllexport) void LongForcast(YuBaoInput *m_pa)
{

for(i=0;i<=n;i++)
{
YuBaoInput *x[i]=(YuBaoInput*)m_pa->yinzi.GetAt(i);
}
}

运行出现错误“D:\调试程序\2009\2009.cpp(121) : error C2440: 'initializing' : cannot convert from 'class YuBaoInput *' to 'class YuBaoInput *[]'
There are no c

改成这样绝对可以,其它人的都没有分配内存,肯定错

/*............................*/
YuBaoInput x[9];
extern __declspec(dllexport) void LongForcast(YuBaoInput *m_pa)
{

for(i=0;i<=n;i++)
{
x[i]=(YuBaoInput*)m_pa->yinzi.GetAt(i);
}
}

程序怎么不完整,我试一下。

YuBaoInput *x[10];//n = 10?
extern __declspec(dllexport) void LongForcast(YuBaoInput *m_pa)
{

for(i=0;i<= 9;i++) //0-9?
{
x[i]=(YuBaoInput*) m_pa->yinzi.GetAt(i);
}
}

YuBaoInput *x[i]=(YuBaoInput*)m_pa->yinzi.GetAt(i);

数组声明并初始化的时候,必须用 {} 为每一个数组元素赋值。

我知道你的本意是声明一个数组,然后用一个循环给这个数组赋值,但是你把“声明 + 循环赋值”和“声明 + 赋初值”弄混了,你的写法变成了后者,即声明数组的同时赋初始值

所以是数组声明位置错了,建议在循环外部声明数组,循环内部为数组元素赋值:

YuBaoInput *x[n];
for(i=0;i<=n;i++)
{
x[i]=(YuBaoInput*)m_pa->yinzi.GetAt(i);
}