免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2145 | 回复: 5
打印 上一主题 下一主题

[C++] 这个template在C++里面如何正确建立? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-23 20:33 |只看该作者 |倒序浏览
template <typename T>

gcptr<T> arr_gcnew(const T & x , int arr_size = 0)
{
        const unsigned const_arr_size = arr_size;

        class arr_T
        {
                T arr_T[const_arr_size];
        } arr_t;
        return gcnew(arr_t);
}

我希望建立一个类,类的属性只有一个数组,因为我要用来定义对象,这个对象的唯一属性就是一个数组,通过这个对象,我想得到的该对象的特征也是sizeof(arr_T)。问题是,arr_size是变量,我如何才能定义这个arr_T这个类呢?

论坛徽章:
0
2 [报告]
发表于 2006-01-23 23:27 |只看该作者
1.如果arr_T对外是不可见的,可以用nested class(inner class),通过外部class的construtor 定义你的class array.
2.如果对外是可见的,用vector等不行?
3.用templat class定义一个arr_T[],然后从该templat class继承,把对arr_T的操作放在你的templat class里面,如果不允许直接对base templat class操作,可以将它定义为abstract的(比如pure virtual dtor).
我没有理解"我想得到的该对象的特征也是sizeof(arr_T)。".

论坛徽章:
0
3 [报告]
发表于 2006-01-24 23:11 |只看该作者

该思想

我没有把那个模式要达到的目的说清楚.
不过我已经知道了,我想的这个构建方法是行不通的.因为在该类中要通过传变量作为 arr_t 数组的长度.在C++里面是无法实现的.所以我采用了Object Descriptor 和 Type Descriptor 来实现了我要达到的功能模式.谢谢你的回复.

论坛徽章:
0
4 [报告]
发表于 2006-01-24 23:45 |只看该作者
原帖由 viktorchen 于 2006-1-24 23:11 发表
我没有把那个模式要达到的目的说清楚.
不过我已经知道了,我想的这个构建方法是行不通的.因为在该类中要通过传变量作为 arr_t 数组的长度.在C++里面是无法实现的.所以我采用了Object Descriptor 和 Type Descript ...



可以实现呀.

论坛徽章:
0
5 [报告]
发表于 2007-06-05 12:01 |只看该作者
数组可以通过这个办法来动态生成?奇怪了都!

论坛徽章:
0
6 [报告]
发表于 2007-06-05 12:58 |只看该作者
不支持!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP