davidm@uunet.UU.NET (David S. Masterson) (01/12/90)
Below is a short program that exploits what I think is a bug in the G++ compiler. I am using g++ 1.36.1 on SunOS 3.5. The bug calls a method that requires an (alpha*) when a (void*) is passed to it. I would have thought that the compiler should flag this as a function call for which an invalid argument type was passed. Am I wrong? --------Code begins-------- #include <stream.h> class alpha { static int x = 0; public: alpha() { x = x + 1; } ~alpha() {} void print(alpha*); }; void alpha::print(alpha* n) { cout << "X = " << x << " "; if (n != 0) n->print((void*) 0); cout << ";"; } int main(int argc, char *argv[]) { alpha test1; test1.print((void*) 0); alpha *test2 = new alpha; test1.print(test2); cout << "\n"; } -- =================================================================== David Masterson Consilium, Inc. uunet!cimshop!davidm Mt. View, CA 94043 =================================================================== "If someone thinks they know what I said, then I didn't say it!"
tiemann@AI.MIT.EDU (Micheal Tiemann) (01/14/90)
When I did the type rules for GNU C++, I thought that cfront was wrong not to let void* convert to T* and vice-versa. I now think that ANSI was wrong, so in GNU C++ version 2.0 (after 1.37.0), I will fix this. Michael