次のように2つのクラスを設定しています。
class Point {
protected:
double coords[3];
public:
Point(double x, double y, double z) {
setX(x);
setY(y);
setZ(z);
};
~Point() {};
double x() {return coords[0];};
double y() {return coords[1];};
double z() {return coords[2];};
void setX(double x) {
coords[0] = x;
};
void setY(double y) {
coords[1] = y;
};
void setZ(double z) {
coords[2] = z;
};
double &operator[](unsigned int x) {
return coords[x];
}
};
class Vector:Point {
public:
Vector(double x, double y, double z);
~Vector() {};
double norm();
void normalize();
};
今、私が次のようなことをしようとするときはいつでも:
Vector v;
printf("%d\n", v[0]);
私は得る:
error: ‘Point’ is not an accessible base of ‘Vector’
error: ‘double& Point::operator[](unsigned int)’ is inaccessible
error: within this context
なんで?