c语言 多个fo循环r,如何用C中的for循环创建多个对象?

在C中,使用new []创建一个数组使用其默认/无参数构造函数初始化所有对象.

所以这一行:(分号添加)

Genes *genes=new Genes[10];

将导致Genes :: Genes()的十个呼叫.

这通常看起来很好,因为当你不声明任何时候,C会给你一个默认的构造函数.但是,为了实现这一点,您不能声明任何构造函数.你的构造函数:

Genes::Genes(double a, double b, double c)

防止编译器为您创建一个默认构造函数,这反过来又会阻止您创建一个Genes对象数组.

这个问题有两个合理的解决方案:

>您可以向Genes类添加一个默认/无参数构造函数.这很简单,但缺乏一些优雅.什么是默认的Genes对象?如果这样的对象是有意义的,那么你可能已经声明了一个默认构造函数.

>查看使用std :: vector而不是数组:http://www.cplusplus.com/reference/stl/vector/.虽然这在短期内是一个更复杂的解决方案,但熟悉标准模板库(提供向量类)将在长期内具有价值.也就是说,如果你刚刚学习C,以前没有看过模板,这可能有点压倒性,你可能想先阅读一些有关模板的内容. (例如http://www.learncpp.com/cpp-tutorial/143-template-classes/)

矢量类允许您声明一个容量,您将放入数组中的对象数量(或者您不能声明容量,导致较慢的插入).然后,当它们被放置到向量中时,它将仅构造对象.你的代码看起来像这样:

#include // to get the vector class definition

using std::vector; // to

vector genes;

genes.reserve(geneno); // optional, but speeds things up a bit

for(i = 0; i <= geneno; i++) {

double d = random();

double e = random();

double f = random();

genes.push_back(Genes(d, e, f));

}

最后一句话(大致)相当于:

Genes temp(d, e, f);

genes.push_back(temp);

您可以随后以与阵列相同的方式访问向量中的元素:

cout << "The third gene's coding is " << genes[3].coding << endl;

您可以使用vector :: size()查询向量的大小:

cout << "The vector has " << genes.size() << "elements" << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值