karl@typo.umb.edu ("Karl Berry.") (09/26/88)
This is on a Sun 3 machine, running Sun OS 3.4.
1) A printf statement in parse.y prints something like `State is nn, input
token number is nnn.' for every syntax error. This is not very nice.
2) The real problem:
passing arguments to a base class constructor doesn't seem to work if the
derived constructor is defined in the class definition. (Or maybe the problem
is something entirely different.) In any case, the definitions:
struct base {
base* next;
base(base* p) { next = p; }
};
class derived :base {
derived(int i) :(0) { v = i; }
private:
int v;
};
compile without complaint under AT&T C++, and GNU C++ gives the following
results:
% g++ -g -v -c x.cc
g++ version 1.27.0
/usr/local/gnu/lib/gcc-cpp+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix x.cc /tmp/cca00699.cpp
GNU CPP version 1.27.0
/usr/local/gnu/lib/gcc-c++ /tmp/cca00699.cpp -quiet -dumpbase x.cc -noreg -version -G -o /tmp/cca00699.s
GNU C++ version 1.27.0 (68k, MIT syntax) compiled by GNU C version 1.28.
At top level:
x.cc:9: parse error before `private'
State is 51, input token number is 287.
x.cc:9: cannot open file parse.output
In function struct derived *derived::derived (int):
x.cc:8: parse error before `0'
State is 50, input token number is 263.
x.cc:8: cannot open file parse.output
x.cc:8: undeclared variable `i' (first use here)
x.cc:8: prior parameter's size depends on `$this'
x.cc:8: prior parameter's size depends on `$this'
x.cc:8: Segmentation violation
g++: Program c++ got fatal signal 11.
It makes no difference if the base is a class or a struct.
(That is, if `struct base' is replaced by `class base', and `:base'
is changed to `:public base', the results are the same.)
karl@umb.edu ...!harvard!umb!karl