如何初始化类的数据成员,以便这些数据成员是其他类的对象(在C++中)
how to initialise data members of a class such that those data members are objects of some other class(in C++)
代码包括
类点 { 公共: 国际 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(){/* 调用函数 seg*/}
函数 seg 要求类 lineSeg 的对象作为参数传递。 类 Point 的对象是类 lineSeg 的数据成员。在这种情况下,如何初始化 lineSeg 类数据成员。
您可以使用聚合初始化动态创建临时值:
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})
也许是这样的:
lineSeg l1{{1,2},{3,4}};
lineSeg l2{{5,6},{7,8}};
auto res = seg(l1, l2);
虽然其他解决方案更好,但它们依赖于您拥有最新的编译器和对语言的理解。这很简单,不是很优雅,但几乎适用于任何编译器:
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;
}
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用指针访问数组中的对象数据成员
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 有没有办法在C++中循环访问对象的不同数据成员
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 如何在C++中使用类对象访问指针数据成员
- C++中的常量对象或私有/常量数据成员(变量)?
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 通过向量中的对象的数据成员迭代
- 继承的类对象如何使用私有数据成员
- 我如何在参考上使用数据成员而不使用新关键字创建对象
- 从R中访问C 对象数据成员
- 静态数据成员是否在所有类对象之前初始化?
- 通过指向对象数据成员的指针更改该对象的值
- 派生类没有额外的数据成员;将基对象静态向下转换为派生对象是否安全
- 只有当声明一个对象时,内存空间才会分配给类的数据成员,那么为什么 Sizeof(class_name) 给我结果
- 如何在 c++ 中从对象数组中获取数据成员数组
- 创建带或不带指针的数据成员对象
- 省略数据成员对象的初始值设定项列表条目