[comp.lang.c++] Bug in cfront 1.2.1

neath@solar-1.stars.flab.Fujitsu.JUNET (04/28/89)

The  following code  causes  an internal error and bus  error in cfront version
1.2.1 when I try to compile it. I believe that this is valid, although somewhat
unusual, C++ syntax. Is this acceptable code? This initialization works fine if
I change private data slot 'a' from a class_b& to something like an int.

---------------------------- Cut Here -----------------------------

#include "stream.h"                                         
                                                            
class class_b {                                               
  int b;                                                  
public:                                                     
  class_b(int&);                                            
  void print();                                           
};                                                          
                                                            
class class_a {                                               
    class_b& a;                                               
public:                                                     
  class_a(class_b&);                                          
};                                                          
                                                            
class_a::class_a(class_b& tb) : a(tb) {
  a.print();                                              
}                                                           
                                                            
class_b::class_b(int& i) {                                      
  b = i;                                                  
}                                                           
                                                            
void class_b::print() {                                       
  cout << "This is output from class_b : b = " << b;        
}                                                           
                                                            
main() {                                                    
    class_b B(10);                                            
    class_a A(B);   // This initializer should print 10 from B
}

---------------------------- Cut Here -----------------------------

Regards
Martin Neath <neath@dsg.ti.com>
------------------------------------------------------------------------
 DISCLAIMER: As always, the opinions expressed above are strictly my own
 and do not reflect those of my employer, Texas Instruments.
------------------------------------------------------------------------
--
Regards,
Martin

ark@alice.UUCP (Andrew Koenig) (04/30/89)

In article <NEATH.89Apr28070320@solar-1.stars.flab.Fujitsu.JUNET>, neath@solar-1.stars.flab.Fujitsu.JUNET writes:
> The  following code  causes  an internal error and bus  error in cfront version
> 1.2.1 when I try to compile it. I believe that this is valid, although somewhat
> unusual, C++ syntax. Is this acceptable code? This initialization works fine if
> I change private data slot 'a' from a class_b& to something like an int.

< code omitted >

Your example is indeed valid C++.  It works fine on the
(pre-release) cfront 2.0 running here.
-- 
				--Andrew Koenig
				  ark@europa.att.com