Classes and inheritance now working as demonstrated by the classic SWIG class example
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4527 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
a7bc7a6ba9
commit
f0826f2391
6 changed files with 175 additions and 0 deletions
66
Examples/csharp/class/runme.cs
Normal file
66
Examples/csharp/class/runme.cs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// This example illustrates how C++ classes can be used from C# using SWIG.
|
||||
// The C# class gets mapped onto the C++ class and behaves as if it is a C# class.
|
||||
|
||||
using System;
|
||||
|
||||
public class runme
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// ----- Object creation -----
|
||||
|
||||
Console.WriteLine( "Creating some objects:" );
|
||||
|
||||
using (Square s = new Square(10))
|
||||
using (Circle c = new Circle(10))
|
||||
{
|
||||
Console.WriteLine( " Created circle " + c );
|
||||
Console.WriteLine( " Created square " + s );
|
||||
|
||||
// ----- Access a static member -----
|
||||
|
||||
Console.WriteLine( "\nA total of " + Shape.nshapes + " shapes were created" );
|
||||
|
||||
// ----- Member data access -----
|
||||
|
||||
// Notice how we can do this using functions specific to
|
||||
// the 'Circle' class.
|
||||
c.x = 20;
|
||||
c.y = 30;
|
||||
|
||||
// Now use the same functions in the base class
|
||||
Shape shape = s;
|
||||
shape.x = -10;
|
||||
shape.y = 5;
|
||||
|
||||
Console.WriteLine( "\nHere is their current position:" );
|
||||
Console.WriteLine( " Circle = (" + c.x + " " + c.y + ")" );
|
||||
Console.WriteLine( " Square = (" + s.x + " " + s.y + ")" );
|
||||
|
||||
// ----- Call some methods -----
|
||||
|
||||
Console.WriteLine( "\nHere are some properties of the shapes:" );
|
||||
Shape[] shapes = {c,s};
|
||||
// for (int i=0; i<shapes.Size; i++)
|
||||
for (int i=0; i<2; i++)
|
||||
{
|
||||
Console.WriteLine( " " + shapes[i].ToString() );
|
||||
Console.WriteLine( " area = " + shapes[i].area() );
|
||||
Console.WriteLine( " perimeter = " + shapes[i].perimeter() );
|
||||
}
|
||||
|
||||
// Notice how the area() and perimeter() functions really
|
||||
// invoke the appropriate virtual method on each object.
|
||||
|
||||
// ----- Delete everything -----
|
||||
|
||||
Console.WriteLine( "\nGuess I'll clean up now" );
|
||||
|
||||
}
|
||||
// Note: when this using scope is exited the C# Dispose() methods
|
||||
// are called which in turn call the C++ destructors
|
||||
|
||||
Console.WriteLine( Shape.nshapes + " shapes remain" );
|
||||
Console.WriteLine( "Goodbye" );
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue