[Mono-list] [Fwd: Sample Test]

Joe Tennies rotund@fatnsoft.com
08 Feb 2002 21:07:00 -0600


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.
>