如何初始化类的数据成员,使这些数据成员是某些其他类的对象(在C ++中)

时间:2016-06-01 10:36:11

标签: c++

代码包括

班级点     {     上市:         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类数据成员。

3 个答案:

答案 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;    
}