代码包括
班级点 { 上市: int x,y; };
class lineSeg
{
public:
point p1,p2;
};
bool seg(lineSeg l1, lineSeg l2){/* code to check whether two line segments intersect or not*/}
int main(){/ * call function seg * /}
函数seg要求类lineSeg的对象作为参数传递。 Point类的对象是类lineSeg的数据成员。在这种情况下,如何初始化lineSeg类数据成员。
答案 0 :(得分:2)
您可以使用聚合初始化动态创建临时值:
seg(lineSeg{point{1, 2}, point{3, 4}}, lineSeg{point{5, 6}, point{7, 8}});
或者只是:
seg(lineSeg{{1, 2}, {3, 4}}, lineSeg{{5, 6}, {7, 8}});
或者使用大括号:
seg(lineSeg{1, 2, 3, 4}, lineSeg{5, 6, 7, 8});
或者,完全讨厌:
seg({1, 2, 3, 4}, {5, 6, 7, 8})
答案 1 :(得分:0)
也许是这样:
lineSeg l1{{1,2},{3,4}};
lineSeg l2{{5,6},{7,8}};
auto res = seg(l1, l2);
答案 2 :(得分:0)
虽然其他解决方案更好,但它们依赖于您拥有最新的编译器和对该语言的理解。这很简单,不是很优雅,但几乎可以在任何编译器上使用:
class point
{
public:
int x;
int y;
};
class lineSeg
{
public:
point p1;
point p2;
};
bool seg(lineSeg l1,lineSeg l2)
{
return false; // insert real code here
}
int main()
{
lineSeg ls1;
lineSeg ls2;
ls1.p1.x = 0;
ls1.p1.y = 0;
ls1.p2.x = 5;
ls1.p2.y = 5;
ls2.p1.x = -1;
ls2.p1.y = -1;
ls2.p2.x = 1;
ls2.p2.y = 1;
bool result = seg(ls1, ls2);
// do stuff with result
return 0;
}