数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 2865|回复: 5

一个关于C++的细节问题(哪位大虾指教指教小弟)

[复制链接]
发表于 2004-10-17 20:19:31 | 显示全部楼层 |阅读模式
怎样才能动态的为对象数组付值,例如:
data* list=new data[n];
for(unsigned int i=0;i<=n;i++)
{ cin>>name3>>num3 ; list.data(name3,num3);
}
这样是行不通的啊!!
请大虾指教
发表于 2004-10-19 20:58:18 | 显示全部楼层
<>我想问一下,list 是data类型n维数组的头指针,这个数组里面的元素是从list[0]到list[n-1],所以你的for循环中的i 不可以取到n,循环条件应改为i&lt;n </P><>再就是你定义的data类型到底是个怎样的数据结构,也就是class data { }是怎样的?</P><>data::data应该是class data的构造函数吧,我记得构造函数应该是自动调用的,即你写list(name3,num3)应该就会直接调用这个构造函数吧(我等下上机去试试,如果不对会在下面再发帖)</P>
发表于 2004-10-19 21:17:35 | 显示全部楼层
<>经过实验后发现:list.data(a,b)这样的调用构造函数的形式是肯定不对的</P><>但是直接list(a,b)也不对,因为在前面已经初始化过了,所以不能再以这样的格式调用构造函数赋值</P><>可以解决的方法就是,再在class里定义一个函数用来给private数据成员赋值</P><P>如果我再查到另外的解决方法会再留言 :)</P>
发表于 2004-10-19 21:24:20 | 显示全部楼层
<>C++不允许初始化对象数组,所以要 创建一个类的对象数组,就对该类的构造函数有要求:</P><>(1)没有构造函数</P><>(2)有构造函数,但要有一个不带参数或具有的参数全是缺省参数的构造函数</P><P>另外我发现建立这个动态数组就是有问题的:data* list=new data[n]; 编译不通过</P>
发表于 2004-10-20 00:08:45 | 显示全部楼层
<>i've got it !!!</P><>上面那个编译不通过的原因就是没有建立一个不带参数的构造函数,因为对象数组对构造函数有特殊的要求,只要修改构造函数为data() {},就可以了;然后再加一个函数如data1来传递参数,程序就可以运行了</P>
 楼主| 发表于 2004-10-24 00:35:27 | 显示全部楼层
<>/*发现了两个错误,一是类数组要默认构造函数,二是list.data(name3,num3);要改成</P>
<>list=data(name3,num3);*/</P>
<> data* list=new data[n];
char name3[10]={0};
long num3;
for(unsigned int i=0;i&lt;=n-1;i++)
{
  cin&gt;&gt;name3&gt;&gt;num3;
  list=data(name3,num3);//左边的对,这个list.data(name3,num3);是错的
}</P>
<P>谢谢eviltd的指点,aligado.在下qq328886399 ,哪位不嫌弃的就加一下</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 21:00 , Processed in 0.068201 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表