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

@ -21,9 +21,9 @@ public class runme {
Square s = new Square(10);
System.out.println( " Created square " + s );
// ----- Access a static member of a nested class -----
// ----- Access a static member -----
System.out.println( "\nA total of " + Shape.Counter.getNshapes() + " shapes were created" );
System.out.println( "\nA total of " + Shape.getNshapes() + " shapes were created" );
// ----- Member data access -----
@ -64,7 +64,7 @@ public class runme {
c.delete();
s.delete();
System.out.println( Shape.Counter.getNshapes() + " shapes remain" );
System.out.println( Shape.getNshapes() + " shapes remain" );
System.out.println( "Goodbye" );
}
}