-3

この問題の明確な解決策が見つかりませんでした。

と の 2 つのクラスがPointありVectorます。Vectorの子ですPointclass のメソッドの 1 つで、 classPointのオブジェクトを使用したいと考えていますVector。私はこのようにします:

class Point
{
    double x, y, z;

    public:
    // constructor from 3 values
    Point(double x, double y, double z)
    : x(x), y(y), z(z)
    {}

    // method move point
    Point move(Vector vect, double dist)
    {
        Vector vectU = vect.unit();
        return sum(vectU.multiplyScalar(dist));
    }
};

class Vector: public Point
{
    double x, y, z;

    public:
    // constructor from 3 values
    Vector(double x, double y, double z)
    : Point(x, y, z), x(x), y(y), z(z)
    {}

    // create unit vector
    Vector unit()
    {
        double len = length();
        return Vector(x / len, y / len, z / len);
    }
};

これをコンパイルすると、行にエラーが表示されますPoint move(Vector vect, double dist) "Vector" has not been declared。このエラーに対する有用な答えが見つかりません。この初期化を行うにはどうすればよいですか?

4

4 に答える 4

0

仮想関数がうまくいくかもしれません。つまり、move() 派生のベース move() 宣言のスタブです。動的バインディングにはポインターを使用します。

例 point *x = new vector(...) x.move()

などなど

于 2013-11-04T14:57:04.843 に答える