免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1776 | 回复: 5

想实现一个数组,里面存几个相同的模版类,怎么弄??? [复制链接]

论坛徽章:
0
发表于 2010-08-11 16:17 |显示全部楼层
本帖最后由 jlccwss 于 2010-08-11 16:31 编辑

//下面是声明一个名为share的模版类并初始化
ShareBuffer<dns_data *> share(10);


//下面是一个模版类的数组,我怎么去初始化数组成员?
ShareBuffer<dns_data *> share_queue[5];



ShareBuffer<dns_data *> *share_queue[5];
share_queue[0] = new ShareBuffer(10);
报错:
error: expected constructor, destructor, or type conversion before ‘=’ token


ShareBuffer<dns_data *> share_queue[5];
share_queue[0].ShareBuffer(10);

error: expected constructor, destructor, or type conversion before ‘.’ token


ShareBuffer<dns_data *> share_queue[5];
share_queue[0] = ShareBuffer<dns_data *> share_queue1(10);

expected constructor, destructor, or type conversion before ‘=’ token

必须我要在ShareBuffer类中重载操作符才可以么?
  1. template<typename ITEM>
  2. class ShareBuffer
  3. {
  4. public:
  5.         ShareBuffer(int bufer_size = 10)
  6.         {
  7.                 size_ = bufer_size;
  8.                 if(size_ <=0) throw "Invalid Size";
  9.                 item_buf_ = new ITEM[size_];
  10.                 pthread_mutex_init(&mutex, NULL);
  11.                 sem_init(&full, 0, 0);
  12.                 sem_init(&empty, 0, size_);
  13.                 head_ = 0;
  14.                 tail_ = 0;
  15.         };
  16.         int producer(ITEM item);
  17.         ITEM consumer();
  18. private:
  19.         int insert_item(ITEM item);
  20.         ITEM remove_item();
  21. private:
  22.         int size_;
  23.         ITEM *item_buf_;
  24.         int head_;
  25.         int tail_;
  26.         pthread_mutex_t mutex;
  27.         sem_t full, empty;
  28. };
复制代码

论坛徽章:
0
发表于 2010-08-11 16:22 |显示全部楼层
救命啊………………

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2010-08-11 16:31 |显示全部楼层
试试
ShareBuffer<dns_data *> share_queue[5] = {10,10, 10, 10, 10};

论坛徽章:
0
发表于 2010-08-11 16:43 |显示全部楼层
本帖最后由 jlccwss 于 2010-08-11 16:47 编辑

回复 3# hellioncu


    --!我想存的是模版类,结果你都给初始成int型的了,这这这……


我试了,结果如下(core里的):

Program terminated with signal 8, Arithmetic exception.
[New process 15676]
[New process 15675]
[New process 15674]
[New process 15673]
[New process 15672]
[New process 15671]
#0  0x00000000004067dd in ShareBuffer<dns_data*>::remove_item (this=0x626aa0) at share_cycqueue.h:82
82                      head_ %= size_;


head_
size_
这两个东西是在构造函数里初始化的

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2010-08-11 16:48 |显示全部楼层
本帖最后由 hellioncu 于 2010-08-11 16:50 编辑
回复  hellioncu


    --!我想存的是模版类,结果你都给初始成int型的了,这这这……


我试了,结 ...
jlccwss 发表于 2010-08-11 16:43



    是用int去调用构造函数!
你不相信拉倒

把你的模板类简化了试

论坛徽章:
0
发表于 2010-08-11 17:21 |显示全部楼层
回复 5# hellioncu


    你是对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP