这个问题其实我明白,但是就是不知道问题在哪里?再次发上来叫大家给我看看
首先建立了一个全局变量:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static double X1,Y1,Z1;//全局变量
然后是我的第一个成员函数
void CActiveDesignDlg::X1ANDY1ANDZ1(double u, double cit, double X1, double Y1, double Z1)
{  
    X1=(m_rt2-u*sin(m_a02*PI))*(m_m11*sin(cit*PI)+m_m12*cos(cit*PI))+m_m13*u*cos(m_a02*PI)+m_m14;
    Y1=(m_rt2-u*sin(m_a02*PI))*(m_m21*sin(cit*PI)+m_m22*cos(cit*PI))+m_m23*u*cos(m_a02*PI)+m_m24;
    Z1=(m_rt2-u*sin(m_a02*PI))*(m_m31*sin(cit*PI)+m_m32*cos(cit*PI))+m_m33*u*cos(m_a02*PI)+m_m34;}
然后得到的X1,Y1,Z1。
第二个成员函数:
void CActiveDesignDlg::nx1ANDny1ANDnz1_2(double cit, double nx10_2, double ny10_2, double nz10_2)
{
   nx10_2=-cos(m_a02*PI)*(m_m11*sin(cit*PI)+m_m12*cos(cit*PI))-m_m13*sin(m_a02*PI);
    ny10_2=-cos(m_a02*PI)*(m_m21*sin(cit*PI)+m_m22*cos(cit*PI))-m_m23*sin(m_a02*PI);
    nz10_2=-cos(m_a02*PI)*(m_m31*sin(cit*PI)+m_m32*cos(cit*PI))-m_m33*sin(m_a02*PI);
    
    BigGearsInitialAnglefi20(X1,Y1,Z1,nx10_2, ny10_2, nz10_2);    UpdateData(false);
}用于求出nx10_2, ny10_2, nz10_2这三个值。
前面两个求出的成员函数用到下面的函数中,求出U0,V0,W0.void CActiveDesignDlg::BigGearsInitialAnglefi20(double X1, double Y1, double Z1, double nx10_2, double ny10_2, double nz10_2)
{
    if(::m_sigma1-90.0==0.0)
     {
      U0=-nx10_2*(Z1+::m_G22)+nz10_2*X1;
     V0= ny10_2*(Z1+::m_G22)-nz10_2*Y1;
      W0= nx10_2*Y1-ny10_2*X1;
      G0=-nz10_2*::m_Ee;
  
  }但现在问题是这个数据我监视的时候发现X1,Y1,Z1,在执行到第二个函数的时候它的值有错误:
Error in OMF type information.在后面则执行到第三个函数是就是0了。
请帮忙看看问题在哪里??

解决方案 »

  1.   

    先问一下,为什么非得使用static型的变量呢?
      

  2.   

    你第一个函数X1ANDY1ANDZ1中的参数和你的全局变量同名???
      

  3.   

    void CActiveDesignDlg::X1ANDY1ANDZ1(double u, double cit, double X1, double Y1, double Z1)
    {   
      X1=(m_rt2-u*sin(m_a02*PI))*(m_m11*sin(cit*PI)+m_m12*cos(cit*PI))+m_m13*u*cos(m_a02*PI)+m_m14;
      Y1=(m_rt2-u*sin(m_a02*PI))*(m_m21*sin(cit*PI)+m_m22*cos(cit*PI))+m_m23*u*cos(m_a02*PI)+m_m24;
      Z1=(m_rt2-u*sin(m_a02*PI))*(m_m31*sin(cit*PI)+m_m32*cos(cit*PI))+m_m33*u*cos(m_a02*PI)+m_m34;}
    这种写法肯定是不对的,从参数传进来的变量是存储在栈中的,函数修改并不能改变变量的值,所谓的传值。
      

  4.   

    函数一,函数二去掉参数X1,Y1,Z1,nx10_2, ny10_2, nz10_2
      

  5.   

    换个名就好了
    全局变量一般写成这样
    g_name
      

  6.   

    我这个里面是想全局变量和参数统一表示,然后就直接用全局变量X1,Y1,Z1的值参与到后面的计算关系。如果我把这个参数改掉,函数表达式中的X1,Y1,Z1也改掉成a ,b,c,然后我把a,b,c的值赋给全局变量X1,Y1,Z1是不是在其他的地方在用到全局变量X1,Y1,Z1的时候,就会是a,b,c的赋值结果????
      

  7.   

    他是用这个函数来求X1,Y1,Z1,那么参数就应该是其他的u,cit,m_a02,m_rt2,m_m11
      

  8.   

    void CActiveDesignDlg::X1ANDY1ANDZ1(double u, double cit)
    {   
      X1=(m_rt2-u*sin(m_a02*PI))*(m_m11*sin(cit*PI)+m_m12*cos(cit*PI))+m_m13*u*cos(m_a02*PI)+m_m14;
      Y1=(m_rt2-u*sin(m_a02*PI))*(m_m21*sin(cit*PI)+m_m22*cos(cit*PI))+m_m23*u*cos(m_a02*PI)+m_m24;
      Z1=(m_rt2-u*sin(m_a02*PI))*(m_m31*sin(cit*PI)+m_m32*cos(cit*PI))+m_m33*u*cos(m_a02*PI)+m_m34;}
    然后得到的X1,Y1,Z1。
    第二个成员函数:
    void CActiveDesignDlg::nx1ANDny1ANDnz1_2(double cit)
    {
      double nx10_2, double ny10_2, double nz10_2;
      nx10_2=-cos(m_a02*PI)*(m_m11*sin(cit*PI)+m_m12*cos(cit*PI))-m_m13*sin(m_a02*PI);
      ny10_2=-cos(m_a02*PI)*(m_m21*sin(cit*PI)+m_m22*cos(cit*PI))-m_m23*sin(m_a02*PI);
      nz10_2=-cos(m_a02*PI)*(m_m31*sin(cit*PI)+m_m32*cos(cit*PI))-m_m33*sin(m_a02*PI);
        
      BigGearsInitialAnglefi20(nx10_2, ny10_2, nz10_2);  UpdateData(false);
    }用于求出nx10_2, ny10_2, nz10_2这三个值。
    前面两个求出的成员函数用到下面的函数中,求出U0,V0,W0.void CActiveDesignDlg::BigGearsInitialAnglefi20(double nx10_2, double ny10_2, double nz10_2)
    {
    if(::m_sigma1-90.0==0.0)
      {
      U0=-nx10_2*(Z1+::m_G22)+nz10_2*X1;
       V0= ny10_2*(Z1+::m_G22)-nz10_2*Y1;
      W0= nx10_2*Y1-ny10_2*X1;
      G0=-nz10_2*::m_Ee;
      
      }
      

  9.   

    如LS,你X1,Y1,Z1是求的值,就不是函数参数
    比如
    int z;
    void add(int x,int y)
    void main()
    {
    int x=3,y=5;
    add(x,y);
    cout<<z<<endl;
    }
    void add(int x,int y)
    {
    z=x+y;
    }
    Z是用X,Y来求的就不是参数,参数是X,Y
      

  10.   

    如果你要求的值也作为参数参与右值
    比如交换x,y的值。就要用引用或指针
    swap(a,b);
    void swap(int &x, int &y)
    {
    int temp;
    temp=x;
    x=y;
    y=temp
    }
    你现在这个只是求X1,Y1,它们就不是参数啦
      

  11.   

    这样做的话,把X1,Y1,Z1设置成全局变量,在成员函数中计算出的值X1,Y1,Z1怎么没有啊??
      

  12.   

    怎么会没有呢,X1,Y1,Z1本来就不是参数
      

  13.   

    那你的m_a02,m_m12这些是什么东东,也是全局的?