小众知识

首页 > 正文

高手解惑,类之间的调用问题

class base
    {
     }
    class sub1:public base
    { 
       base *p;
       sub1(base *p );
       int fun3();
    }  
    sub1::fun3() {sub2 *q = (sub2 *)p; q->fun2(); }
    class sub2:public base
    {
       int i;
       sub1 *p;
       fun1();        
       fun2();
    } 
    sub2::sub2(){ p = new sub1(this); i = 9}; // 将sub2指针传给sub1实例
    sub2::fun1(){ p->fun3() };
    sub2::fun2(){ cout << i; }
    sub2::~sub2(){delete p;}
    main()
  {
       sub2 *p;
       p = new sub2;
       p->fun1();   
       delete p;
    } 

    疑问? 我的想法是两个字类都是一个基类继承过来的。sub2 new 一个sub1,并
传递自己的指针给sub1, 然后事件触发sub1的实例的函数,程序中模拟直接调用p->fun1() 这样 sub1开始运行,sub1得到生成该类的指针,并调用函数sub2的fun2,语句 cout << i ; VC 提示 Unhandled exception in xxx.exe 0xC0000005;Access Violation ,估计是不能读取。
     请问为什么?是不是我这样反复嵌套调用指针应引起的?请高手帮忙分析  

 oo 发表于:2003-09-27 17:19:11
得分:0 

你的 sub1(base *p );没实现也。 

 sevecol 发表于:2003-09-27 17:22:00
得分:0 

楼主的代码也太乱了

改成这样

class sub2;

class base
{
};
    
class sub1:public base

       base *p;
public:
sub1(base *p1)
{
p=p1;
}
    void fun3();
};



class sub2:public base
{
       int i;
       sub1 *p;
public:
   sub2();
   ~sub2();
       void fun1();        
       void fun2();
};

void sub1::fun3() 
{
sub2 *q = (sub2 *)p; 
q->fun2(); 
}

sub2::sub2()

p = new sub1(this); 
i = 9;
}; // 将sub2指针传给sub1实例
    
void sub2::fun1()

p->fun3();
};

void sub2::fun2()

cout << i; 
}
    
sub2::~sub2()
{
delete p;
}

void main()
{
       sub2 *p = new sub2;
       p->fun1();   
       delete p;

上一篇:高斯消元法
下一篇:我提出如何处理类中方法的返回值的一种办法,欢迎指点

分享到: