これがあなたのやり方です:
Point px;
Point py;
Point pz;
Triangle trig(px, py, pz);
trig
クラスのインスタンスであるオブジェクトにTriangle
なり、上記は3つのPoint引数を使用してコンストラクターを呼び出します。
別の方法はポインタ用です:
Triangle *pTrig = new Triangle(pX, pY, pZ);
さらに、私はこれがより良いだろうと提案します:
Triangle::Triangle()
: A(NULL), B(NULL), C(NULL)
{
}
Triangle::Triangle(const Point& X,const Point& Y, const Point& Z)
: A(new Point(X)), B(new Point(Y)), C(new Point(Z))
{
}
Pointにコピーコンストラクタがあると仮定します。
関数内から呼び出してoperator>>
引数Tを更新したいのですが、既に作成されているものに対してコンストラクターを呼び出すことができないため、これは機能しません。代わりに、必要なのは代入演算子を実装することです。詳細については、 http://en.wikipedia.org/wiki/Assignment_operator_%28C%2B%2B%29を参照してください。
その後、あなたはすることができますT = Triangle(X,Y,Z);
代入演算子を実装するには、次のようにします。
Triangle& Triangle::operator= (const Triangle& other)
{
if (this != &other) // protect against invalid self-assignment
{
if (A != NULL) delete A;
if (B != NULL) delete B;
if (C != NULL) delete C;
A = new Point(other.A);
B = new Point(other.B);
C = new Point(other.C);
}
return *this;
}
Pointにコピーコンストラクタがあると仮定します。コピーコンストラクターを実装するには、 http://en.wikipedia.org/wiki/Copy_constructorを参照してください。
コピーコンストラクターは次のようになりますが、Pointに対して実行する必要があります。
Triangle& Triangle::Triangle(const Triangle& other)
: A(new Point(other.A)), B(new Point(other.B)), C(new Point(other.C))
{
}
}