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:
parent
b65ba2a8db
commit
2d518c638c
22 changed files with 802 additions and 18 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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" );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue