classA是从classB中派生出来得,但是ClassA里面可以有自己得东西啊,ClassB当然可以调用ClassA中得东西咯
比如说你是从你爸爸那里拿钱得,你用他得钱赚钱了,现在你爸爸要拿你得钱,为什么不可以呢?可能比喻有点不恰当,但是表达得就是这个意思

解决方案 »

  1.   

    比喻不正确。
    class a并不是由class b创造出来的,何来鸡与鸡蛋的关系?
    只是互想引用的问题。
    互想拥有各自的引用指针,对于引用指针来讲,任何类的实例所占用的内存都是一样的。
    并不是对象的大小与引用指针本身所占的空间大小没有关系,所以,在编译时,编译器并不需要去了解实际的对象会有多大。
    所以,编译器是可以正确编译的。
      

  2.   

    个人觉得:
    public class myclassA :myclassB
    {             
    }
    public class myclassB :myclassA
    {
    }
    才是鸡生蛋和蛋生鸡的问题。
      

  3.   

    UP,不是鸡与蛋的问题,代码是有问题的,很容易造成死循环,从而堆栈溢出:
    在strive2008 的代码中当初始化myclassA不会发生堆栈异常,这是因为当初始化myclassA,系统不会去调用myclassB 的构造函数,所以myclassB._classA 是没有被初始化的。如果你的code使得系统再去初始化myclassB._classA, 这样就会产生死循环,从而堆栈溢出
      

  4.   

    搂主的方法没有死循环,只是在一个对象中声明了另一个对象,
    qqq123(qqq123)的方法才有可能造成循环定义,但是在VS.NET中,编译不过去,提示又循环定义。