Thread View: gnu.g++.bug
1 messages
1 total messages
Started by Cory Kempf
Thu, 28 Sep 1989 21:35
g++ bug or misunderstanding?
Author: Cory Kempf
Date: Thu, 28 Sep 1989 21:35
Date: Thu, 28 Sep 1989 21:35
79 lines
2520 bytes
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