我有一個結構Point,它有一個帶引數的建構式和一個名為Circle的類。
struct Point{
int x, y;
Point(){}。
Point(int ox, int oy) : x(ox),y(OY){}。
};
class Circle{
public:
點obj。
int radius;
圓(Point pt(int ox, int oy), int raza) : obj. x(ox), obj.y(oy), radius(raza) {}.
};
int main()
{
Circle(Point p(2,3),3) 。
return 0;
問題是,我不知道如何將一個帶引數的結構構造器作為引數傳遞給我的Circle類構造器。
uj5u.com熱心網友回復:
Circle(Point pt(int ox, int oy), int raza) : obj. x(ox), obj.y(oy), radius(raza) {}。
是錯誤的語法,應該是:
Circle(Point pt, int raza) 。obj(pt), radius(raza) {}。
然后
Circle circle(Point(2, 3), 3)。
uj5u.com熱心網友回復:
你可以這樣做 :
class Point
{
public:
Point(int x, int y) :
m_x(x)。
m_y(y)
{
}
private:
int m_x{ 0 };
int m_y{ 0 };
};
class Circle
{
public:
Circle(const Point& pt, int raza) :
m_point{ pt },
m_radius{ raza }
{
}
private:
點 m_point;
int m_radius;
};
int main()
{
圓c1(Point(2,3), 3) /span>;
//或使用這個更短的變體。
///第一個引數是一個點,{2,3}尋找一個建構式。
//Point的兩個ints,并找到它。
圓 c2({ 2,3 }, 3) 。
return 0;
uj5u.com熱心網友回復:
你打算做的事情可以通過以下方式完成
Circle(int ox, int oy, int raza) :
obj(ox, oy)
radius(raza)
{}
或者
Circle(Point const& pt, int raza) :
obj(pt), /注意,這里是呼叫obj的隱式定義的復制構造器,而不是你定義的那個。
radius(raza)
{}
因此,如果你定義了上面的任何一個建構式,下面的內容將是有效的
。Circle crl(1, 2,3)。//對第一個建構式來說是有效的。
圓crl(Point(1,2),3)。//對第二個建構式來說是有效的。
圓形 crl({1, 2}, 3)。//對第二個建構式來說是有效的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313128.html
標籤:
上一篇:遞回呼叫私有方法
下一篇:從另一個C 檔案訪問類
