基类C中public:double n,p,q
class A::public C
class A::fun(double x,double y[],double dydx[]){dydx[0]=n*y[0]+p*y[1]
dydx[1]=n*y[2]
}//大致情况
class B::public C
class B::fun(double x,double y[],double dydx[])
{dydx[2]=q*y[0]+n*y[2]}在CMyView中,我的函数CreatFun()//为了建立方程组
{A*a;B*b;
a->fun();
 b->fun();
}//(再用算法解这方程组,不是重点)
我现在的情况是在CdlgA中输入数据m_n,m_p。在CdlgB中输入m_q。(都是double)希望m_n,n_p,m_q的值存入n,p,q。且n,p,q自动进入fun函数里成为已知数
我听了高手的建议
 ClassC Cvoid CMyView::xxxx()
{
   ClassA dlgA; 
   C.n = dlgA.m_n;
   C.p=dlgA.m_p;
   ClassB dlgB; 
   C.q = dlgB.m_q;
}这样我C中的npq是赋值成功了,可我的fun函数里npq还是0,我该怎么办才好呢,先谢了

解决方案 »

  1.   

    大体逻辑这样Class C为父类
    Class A 和Class B属于子类,是这三个类之间的逻辑关系。但是你声明对象的时候,就是各自开辟空间了。不是这么用的。如果你想完成这个功能,可以这么搞--------------------------------------------------
    //class C的头声明
    #ifndef _CLASS_C_H
    #define _CLASS_C_H#include "ClassA.h"
    #include "ClassB.h"Class C
    {
    public:
    A *m_pClassA;
    B *m_pClassB;
    }extern C g_shareObj;----------------------------
    #include "classC.h"
    class A
    {
    public:
    .....
    }A::A;
    {
    g_shareObj.m_pClassA = this;
    }-----------------------------
    ----------------------------
    #include "classC.h"
    class B
    {
    public:
    .....
    }A::A;
    {
    g_shareObj.m_pClassB = this;
    }void CMyView::xxxx() 

    if(g_shareObj.m_pClassA != NULL)
    {
    g_shareObj.m_pClassA->c = ...
    g_shareObj.m_pClassA->q =....

    g_shareObj.m_pClassA->fun(...);
    }

    if(g_shareObj.m_pClassB != NULL)
    {
    g_shareObj.m_pClassB->c = ...
    g_shareObj.m_pClassB->q =....
    g_shareObj.m_pClassB->fun(...);
    }

      

  2.   

    我的方法是将ClassC作为了ClassA 和ClassB的公共类,其里面保存了两个对象的指针。然后用的时候,直接用公共类就可以操作两个对象中的public变量和public函数