这个问题其实我明白,但是就是不知道问题在哪里?再次发上来叫大家给我看看
首先建立了一个全局变量:
#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了。
请帮忙看看问题在哪里??
首先建立了一个全局变量:
#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了。
请帮忙看看问题在哪里??
{
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;}
这种写法肯定是不对的,从参数传进来的变量是存储在栈中的,函数修改并不能改变变量的值,所谓的传值。
全局变量一般写成这样
g_name
{
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;
}
比如
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
比如交换x,y的值。就要用引用或指针
swap(a,b);
void swap(int &x, int &y)
{
int temp;
temp=x;
x=y;
y=temp
}
你现在这个只是求X1,Y1,它们就不是参数啦