[Mono-list] [Fwd: Sample Test]
Joe Tennies
joe@fatnsoft.com
08 Feb 2002 21:36:25 -0600
Whoops... this is an infinite loop... GRRRRR... wish I could remember
exactly how it worked... here's the basics of it:
the class would call the global version of a function instead of one
from its parent. The key was that you had to inherit several levels
deep before you noticed it.
On Fri, 2002-02-08 at 21:07, Joe Tennies wrote:
> Darn it. That means I must have screwed up the test (I was writing it
> from memory).
>
> That was the basic problem. It wouldn't look to the correct place. The
> test should fail on all the compilers you mentioned and then some (Code
> Warrior's and Borland's, though I think Borland has since fixed it.)
>
> The test appeared in Windows Developer's Journal (or something like
> that)... it was a "Bug of the month" or "Bug++ of the Month" If someone
> could look it up for me (I read this at my old job... like the August
> 2001 issue... somewhere between summer and December of 2001)
>
> Perhaps the test was actually:
>
> > int Bar()
> > {
> > return 0;
> > }
> >
> > class cParent
> > {
> > public:
> > int Bar() {return 1;}
> > }
> >
> > class cChild : public cParent
> > {
> > }
> >
> > class cGrandchild : public cChild
> > {
> > int Bar() { return Bar(); }
> > }
> >
> > int main()
> > {
> > cGrandhild* gcInstance = new cGrandchild();
> >
> > if (gcInstance->Foo() == gcInstance->Bar())
> > return 0;
> > else
> > {
> > cout << "Problem w/ inheritance and global functions."
> > return 1;
> > }
> > }
>
> --------------------------------------------------
> Message: 4
> Subject: RE: [Mono-list] [Fwd: Sample Test]
> charset="us-ascii"
> Date: Fri, 8 Feb 2002 03:56:31 -0800
> From: "Piers Haken" <piersh@friskit.com>
> To: <mono-list@ximian.com>
>
> Joe, there's no such thing as a global function in c#. Just like in
> Java, every method must be a member of a class. I guess a public static
> method could be considered 'global'. I'm sure this would be a good
> addition to the Mono compiler test suites.
>
> On the other hand, I'm not sure which C++ compilers you were trying. It
> works fine for me on VC6, VC7, g++/cygwin, g++/debian.
>
> Piers.
>
> -----Original Message-----
> From: Joe Tennies [mailto:rotund@fatnsoft.com]
> Sent: Thursday, February 07, 2002 7:37 PM
> To: mono-list@ximian.com
> Subject: [Mono-list] [Fwd: Sample Test]
>
>
> Oops. Tried to send this w/ the wrong account. Try this again
>
> > I am still learning C#, so I'll submit this test in C++. I know this
> > used to fail on almost every C++ compiler (really don't know why).
> >
> > int Bar()
> > {
> > return 0;
> > }
> >
> > class cParent
> > {
> > public:
> > int Bar() {return 1;}
> > }
> >
> > class cChild : public cParent
> > {
> > }
> >
> > class cGrandchild : public cChild
> > {
> > int Foo() {return Bar();}
> > }
> >
> > int main()
> > {
> > cGrandhild* gcInstance = new cGrandchild();
> >
> > if (gcInstance->Foo() == gcInstance->Bar())
> > return 0;
> > else
> > {
> > cout << "Problem w/ inheritance and global functions."
> > return 1;
> > }
> > }
> >
> > Most C++ compilers would return gcInstance->Foo() == 0. This means it
>
> > would call the global instance.
> >
> > I don't know if you can create a global function in C#. If you can,
> > this would be a good test to run.
> >
>
>
>
>
> _______________________________________________
> Mono-list maillist - Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>