whm@UUNET.UU.NET ("Bill Mitchell") (04/12/89)
The following program either illustrates a bug in g++.1.34.2 or a bug in my
understanding.
---------------------------------
void printf(char *, ...);
class A {
A() {
printf("Creating A\n");
}
};
class B {
A *ap;
B(A *p, int x) {
printf("Creating B\n");
ap = p;
}
};
main()
{
printf("Starting...\n");
A a;
B b(&a, 1);
}
-----------------------------------
When compiled, it produces a couple of warnings:
bug1.cc:7: warning: class A only defines private constructors and has no friends
bug1.cc:15: warning: class B only defines private constructors and has no friends
The code produced for main() has no evidence of the constructors for a and b.
Just on general principles, I would expect further messages rising from the
declarations of a and b when there are no constructors to be used, but perhaps
this is a feature. (???) If the second argument is elided from B::B(), then
"B b(&a)" will draw an error: "bad argument to constructor B".
This is with g++-1.34.2/gcc-1.34 on a Sun-3 running 4.0.1.
p.s.
I think g++/gdb is still the best thing around; keep up the good work!
--------------------------------------------------------------------
Bill Mitchell whm@sunquest.com
Sunquest Information Systems sunquest!whm@arizona.edu
Tucson, AZ {arizona,uunet}!sunquest!whm
602-885-7700