Chinaunix

标题: 这个template在C++里面如何正确建立? [打印本页]

作者: viktorchen    时间: 2006-01-23 20:33
标题: 这个template在C++里面如何正确建立?
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这个类呢?
作者: 柳五随风    时间: 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)。".
作者: viktorchen    时间: 2006-01-24 23:11
标题: 该思想
我没有把那个模式要达到的目的说清楚.
不过我已经知道了,我想的这个构建方法是行不通的.因为在该类中要通过传变量作为 arr_t 数组的长度.在C++里面是无法实现的.所以我采用了Object Descriptor 和 Type Descriptor 来实现了我要达到的功能模式.谢谢你的回复.
作者: 柳五随风    时间: 2006-01-24 23:45
原帖由 viktorchen 于 2006-1-24 23:11 发表
我没有把那个模式要达到的目的说清楚.
不过我已经知道了,我想的这个构建方法是行不通的.因为在该类中要通过传变量作为 arr_t 数组的长度.在C++里面是无法实现的.所以我采用了Object Descriptor 和 Type Descript ...



可以实现呀.
作者: xshhe    时间: 2007-06-05 12:01
数组可以通过这个办法来动态生成?奇怪了都!
作者: doctorjxd    时间: 2007-06-05 12:58
不支持!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2