🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Cory Kempf Thu, 28 Sep 1989 21:35
g++ bug or misunderstanding?
#439
Author: Cory Kempf
Date: Thu, 28 Sep 1989 21:35
79 lines
2520 bytes
I have either found two bugs in g++, or I don't quite understand C++ yet.  
Could someone who understands this stuff a bit better tell me which 
it is? (and explain it to me)
------------
the result:
Snoopy 166> g++ -o Bug Bug.cc
Snoopy 167> Bug
Lvl1 test
Level 1.2 test
Level 1.2.1 test
Lvl1 test		[ Bug? #1 I think this should print "Level 1.2.1 test"]
Snoopy 168> g++ -DBUG -o Bug2 Bug.cc
Failed assertion TREE_CODE (field) == FIELD_DECL at line 4191 of `cplus-class.c'.
g++: Program cc1plus got fatal signal 6.
Snoopy 169>
--------------
The code:

#include "stream.h"
#include <string.h>

typedef unsigned short ushort;
typedef unsigned long ulong;
typedef unsigned char uchar;

class Lvl1 {	// base class
  public:
    Lvl1() {;}		// there
    Lvl1(int val) {;}
    virtual void writetest() { cerr << "Lvl1 test\n"; }
};

class Lvl1_2 : public Lvl1 {
  public:
    Lvl1_2() {;}
    Lvl1_2(int val)  {;}
    virtual void writetest() { cerr << "Level 1.2 test\n"; }
};

typedef void Lvl1::(*FP)();	// pointer to method returning void

class Lvl1_2_1 : public Lvl1_2 {
  public:
    Lvl1_2_1(int val) {;}
    virtual void writetest() { cerr << "Level 1.2.1 test\n"; }
    void call(FP f) { (*f)(); }
};

    
main() {
    Lvl1 a(1);
    Lvl1_2 c(3);
    Lvl1_2_1 e(5);
    a.writetest();
    c.writetest();
    e.writetest();
#ifndef BUG
    Lvl1 *eq;		// pointer to e's base class
#else
    Lvl1_2_1 *eq;	// pointer to class of e; causes
                        // compiler to croak
#endif
    FP foo;		// method pointer
    eq = &e;		
    foo = eq->writetest;	// this SHOULD point to 
                                // Lvl1_2_1::writetest, 
                                // Shouldn't it??
    e.call(foo);	// and this should call it (via 
                        // Lvl1_2_1::call
}

-------------
Thanks in advance,
+C

-- 
Cory Kempf		Technology Concepts	     phone: (508) 443-7311 x341
uucp:	{anywhere}!uunet!tci!kempf, kempf@tci.bell-atl.com
DISCLAIMER: TCI is not responsible for my opinions, nor I for theirs
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads