Unless you really have a good reason for not wanting derived
classes to use something, most private: data really should
be protected:. If the side lengths in the triangle
class had been declared protected, then the implementation
of rightTriangle would have been much easier:
// rightTriangle.h
class rightTriangle : public triangle
{
public:
rightTriangle();
rightTriangle(double side1, double side2);
void setTriangle(double side1, double side2);
};
// rightTriangle.C
#include <math.h>
rightTriangle::rightTriangle()
{
s1 = 0; s2 = 0; s3 = 0;
}
rightTriangle::rightTriangle(double side1, double side2)
{
s1 = side1; s2 = side2;
s3 = sqrt( s1 * s1 + s2 * s2 );
}
void rightTriangle::setTriangle(double side1, double side2)
{
s1 = side1; s2 = side2;
s3 = sqrt( s1 * s1 + s2 * s2 );
}
Note that the public interface of rightTriangle stayed
the same!