我想在一个Dialog中的一个edit里输入一个数值,用来定义弹出的另一个Dialog中数组的长度,总是出错,下面是我程序:
void Czhengtai::OnOK() 
{
// TODO: Add extra validation here UpdateData();
int i;
CMonte0521Dlg zt;
int num=zt.m_SamNum;
double zhengtai[num];
double randf;

srand(GetTickCount());
for(i=0; i<10; i++)
{randf=(double)(rand()/(double)RAND_MAX);
zhengtai[i]=m_zhengtai1+m_zhengtai2*randf;
}
SamNum=zhengtai[0];
CDialog::OnOK();
}
总是提示错误,就是数组长度的定义这里。大家帮解决一下,谢谢!我刚涉入VC;

解决方案 »

  1.   

    CMonte0521Dlg zt;
    zt.DoModal();
    int num=zt.m_SamNum; 
      

  2.   

    double zhengtai[num]; double *zhengtai = new double[num]; 
      

  3.   

    就是楼上这样的。
    LZ你只是定义了一个对话框类,DoModal()一下让对话框弹出来才能输入你要的数值啊。
      

  4.   

    double zhengtai[num]; 这种声明方式,[]内必须为常量,因为寄存器要在函数刚刚调用的时候,在栈上分配空间,这个空间大小是在编译期就计算好的,所以在运行的时候,不能动态在栈上创建数组,只能用new的方式在堆上分配。
      

  5.   

    我采用了2楼的办法,运行一次后,下次再编译运行时,总是出现编译错误:
    cannot open Debug/Monte0521.exe for writing
    Error executing link.exe.
    纳闷,我好像都关了
      

  6.   


    new出来的变量,用完必然要delete
      

  7.   

    1  new出来的数据,不能用delete p;删除,而要用 delete[] p;删除。
    2  cannot open debug/Monte0521.exe for writing. 很明显的提示嘛,楼主英语,呵呵。你的程序在内存中还存在,无法debug。看看进程管理器,杀死还在运行中的程序。
      

  8.   

    我试了下,可以,没问题,重点是后面要记得delete
      

  9.   

    没有找到进程,我最后注销了一下,现在没事了,大家见笑了。想问一下,如上面的程序,我怎么加delete[];怎么加法?不好意思,小弟刚接触VC和C++
      

  10.   

    double *zhengtai = new double[num]; 
    delete[] double;
      

  11.   

    int num=zt.m_SamNum; 
    在DoModal之前调用上句,那要先在构造函数里初始化变量的,不然变量默认应该是0的
      

  12.   

    貌似是 delete[] zhengtai;
    delete[] double显示错误:
    error C2062: type 'double' unexpected
      

  13.   

    对,应该是delete[] zhengtai; 看错了