這是你如何做到這一點:
Point px;
Point py;
Point pz;
Triangle trig(px, py, pz);
trig
將是對象,它是Triangle
類的一個實例,上面會調用3個參數的構造函數。
另一種方式是指針:
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))
{
}
假設點有一個拷貝構造函數。
你想從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;
}
假設點有拷貝構造函數。爲了實現拷貝構造函數,請參閱http://en.wikipedia.org/wiki/Copy_constructor
拷貝構造函數如下所示,但你需要做的點:
Triangle& Triangle::Triangle(const Triangle& other)
: A(new Point(other.A)), B(new Point(other.B)), C(new Point(other.C))
{
}
}
你使用類指針的指針並通過非const引用獲取構造函數參數的任何原因? – chris 2013-03-02 15:15:58
您不應該在該函數中使用構造函數,而不是如果您通過引用傳入「Triangle」。 – Beta 2013-03-02 15:17:26