perm@mizar.docs.uu.se (Per Mildner) (05/25/89)
I'm Per-Mildner@AIDA.CSD.UU.SE
Configuration:
SUN 4 with OS 4
tm.h -> config/tm-sparc+.h
md -> config/sparc.md
g++ version 1.35.0
g++ -Wall -O program.cc
1.
I don't know if this is a bug, but:
It would be useful if structures could have size zero.
This could eg be used ot inherit a bunch of static members.
#include <stream.h>
class foo {
static int x;
};
int main(int argc, char* argv[]) {
cout << "sizeof(foo)==" << sizeof(foo) << ".\n"; // says 1 on my system
return 0;
};
2.
class C {
public:
int slot;
friend int bug(C c) {return c.slot;}
};
/*
g++ -Wall -c friend-inline-bug.cc
friend-inline-bug.cc:4: warning: `int bug (struct C)' declared but never defined
I get this even if I actually use the function (it gets defined and
works ok).
*/
3.
#include <stream.h>
class base {
public:
long field;
virtual int f () {return 1*field;};
};
class derived : public base {
public:
int f () {return 2*field;}
};
struct foo {
base aa,bb;
};
void bug (base& a, base& b) {
cout << "a: " << a.f() << ", b: " << b.f() << ".\n";
struct foo aabb;
aabb.aa = a;
aabb.bb = b;
// This gives a segmentation fault.
// Similar circumstances did print but used base::f() for both structure components.
// (which might be the correct behaviour)
cout << "aabb.aa.f(): " << aabb.aa.f() << ", aabb.bb.f(): " << aabb.bb.f() << ".\n";
};
int main(int argc, char* argv[]) {
base b;
derived d;
b.field=2;
d.field=11;
bug(b,d);
return 0;
};