Add C++ nested class example

This also reverts the nested class additions to the Java/C# 'class' example
so that the 'class' example remains identical across different language modules
This commit is contained in:
William S Fulton 2013-11-29 07:46:48 +00:00
commit 2d518c638c
22 changed files with 802 additions and 18 deletions

View file

@ -9,7 +9,7 @@ void Shape::move(double dx, double dy) {
y += dy;
}
int Shape::Counter::nshapes = 0;
int Shape::nshapes = 0;
double Circle::area(void) {
return M_PI*radius*radius;

View file

@ -2,19 +2,17 @@
class Shape {
public:
struct Counter{
static int nshapes;
};
Shape() {
Counter::nshapes++;
nshapes++;
}
virtual ~Shape() {
Counter::nshapes--;
nshapes--;
};
double x, y;
void move(double dx, double dy);
virtual double area(void) = 0;
virtual double perimeter(void) = 0;
static int nshapes;
};
class Circle : public Shape {

View file

@ -17,9 +17,9 @@ public class runme
Console.WriteLine( " Created circle " + c );
Console.WriteLine( " Created square " + s );
// ----- Access a static member of a nested class -----
// ----- Access a static member -----
Console.WriteLine( "\nA total of " + Shape.Counter.nshapes + " shapes were created" );
Console.WriteLine( "\nA total of " + Shape.nshapes + " shapes were created" );
// ----- Member data access -----
@ -60,7 +60,7 @@ public class runme
// Note: when this using scope is exited the C# Dispose() methods
// are called which in turn call the C++ destructors
Console.WriteLine( Shape.Counter.nshapes + " shapes remain" );
Console.WriteLine( Shape.nshapes + " shapes remain" );
Console.WriteLine( "Goodbye" );
}
}