BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #45132同步于 2010/10/22
CPP机器人发帖

[合集] 请教...有关模板的

shenlei
2010/10/22镜像同步0 回复
☆─────────────────────────────────────☆ nplus (nPlus) 于 (Tue Aug 5 14:44:26 2008) 提到: 我用模板写了一个容器... 再写迭代器的时候(与之分离,通过从容器传递来的指针初始化) (迭代器储存一个内容指针的数组,并对这个数组实现迭代操作) 由于迭代器本身并不是由模板的参数初始化的 但初始化(构造)时必须要用含有模本参数的容器引用进行 我是了n种方法不管是把这个迭代器(class)放在模板里或者移除模板都无法通过 不知道各位大侠有什么办法能救救小弟...谢谢 ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Tue Aug 5 17:49:56 2008) 提到: 用现有的容器呗,都已经那么强大了。 话说,迭代器不是对于指针的类封装么?怎么迭代器里面还会有数组? 小白飘过…… ☆─────────────────────────────────────☆ taps (水龙头) 于 (Tue Aug 5 18:24:42 2008) 提到: 为什么应该是其它原因吧,这肯定是可以的啊。一般是用容器的成员函数来初始化这个Iterator对象,vector<int>::iterator it = vec.begin();这个函数的返回值是Iterator类型的,不是“容器的引用进行初始化”吧。另外迭代器一般也只保存某个地址,以及一些运算符的重载,不会“储存一个内容指针的数组”吧 【 在 nplus 的大作中提到: 】 : 我用模板写了一个容器... : 再写迭代器的时候(与之分离,通过从容器传递来的指针初始化) : (迭代器储存一个内容指针的数组,并对这个数组实现迭代操作) : ................... ☆─────────────────────────────────────☆ hmily821224 (笨笨猫) 于 (Wed Aug 6 01:01:20 2008) 提到: 你好像太急着发帖了,语句有些不通顺。 能说清楚些么? 【 在 nplus 的大作中提到: 】 : 我用模板写了一个容器... : 再写迭代器的时候(与之分离,通过从容器传递来的指针初始化) : (迭代器储存一个内容指针的数组,并对这个数组实现迭代操作) : ................... ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 12:01:37 2008) 提到: 我的意思是 我现在着手的只是一个算法和数据的实践... 跟STL没多大关系 现在遇到的困难是 我有这样一个设想 容器用链表实现(已经完工) 同时存在一个单独的iterator class 以这样的方式声明和初始化iterator it(container XX) 本身和容器类通过friend或者内部的接口交换数据 初始化迭代器时容器传递其链表所有储存内容的指针 在iterator内存在私有成员为内容指针的数组 iterator通过对该数组的操作进行各种算法迭代 问题是 template<class Ty> class container {...} 但是编译器不通过 template<class Ty> class iterator {...} 因为它的数据成员是一个常量 但是初始化列表中不能体现 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 12:05:16 2008) 提到: 迭代器只是一种操作对象的统称... 和怎么实现没有关系 能执行迭代操作的就叫迭代器了 ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Aug 6 14:20:29 2008) 提到: 好吧,姑且同意你说的“能实现迭代操作的就叫迭代器了”…… 反正这个和STL已有的定义不一样 =。= 报了什么错,你不贴代码,不给错误信息,没有人知道咋回事。 呵呵 ☆─────────────────────────────────────☆ hmily821224 (笨笨猫) 于 (Wed Aug 6 15:11:30 2008) 提到: 但是编译器不通过 template<class Ty> class iterator {...} 因为它的数据成员是一个常量 但是初始化列表中不能体现 这句话又是什么意思? ☆─────────────────────────────────────☆ hmily821224 (笨笨猫) 于 (Wed Aug 6 15:14:59 2008) 提到: 你是不是哪个地方不小心出了“笔误”? iterator的构造函数应该这样写,是不是这地方弄错了? template<class Ty> iterator { public: iterator (Container<Ty> c&); } 【 在 nplus 的大作中提到: 】 : 我的意思是 : 我现在着手的只是一个算法和数据的实践... : 跟STL没多大关系 : ................... ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 16:25:14 2008) 提到: 没错的 我就是那么写的 (container<Ty>& pubContainer); 就连 container<Ty> pub都试过了 意思就是 用了template它告诉你iterator is declared as a non-class template 不用template它告诉不知道Ty是什么 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 16:27:55 2008) 提到: 【 在 ericyosho 的大作中提到: 】 : 好吧,姑且同意你说的“能实现迭代操作的就叫迭代器了”…… : 反正这个和STL已有的定义不一样 : =。= : ................... 呵呵...谢谢你的提醒...但是容我争辩一句(请不要放在心上) STL没有定义什么是迭代器...只实现了迭代器... 打个比方...可能在中国...说到饭我们就会想到米饭...但在西方想到的是面包 但是实际上饭只是对一些吃的东西的总称... 米饭只是在中国约定俗成的规则...就像stl里迭代器的实现方法一样 包涵一下...我有点钻牛角尖 ☆─────────────────────────────────────☆ windam (棒棒糖) 于 (Wed Aug 6 18:36:11 2008) 提到: 贴代码吧 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 19:03:58 2008) 提到: 我手写好了 template<class Ty> class vector { public: ... friend class iterator;//这只是一种想法...不能这样交换数据的话可以写个函数; private: int sum; Ty content; int num; Ty* index(int pubNum);//提供链表内数据指针 ... }; template<class Ty> class iterator { public: iterator(vector<Ty>& pubVector) { pointer=new Ty*[pubVector.sum] for(int i=1;i<=pubVector.sum;i++) { 为通过pubVector.index(i)为pointer赋值 }; }; ... private: Ty** pointer; }; ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 19:09:07 2008) 提到: 赋值比较麻烦我就不写了 用这样一个思想 #include "iostream" using namespace std; int main(void) { int** pointer=new int*[5]; for(int i=0;i<5;i++) { pointer[i]=&i; cout<<*pointer[i]<<endl; }; return 0; }; ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Aug 6 19:23:07 2008) 提到: 我不知道你怎么弄的,我在gcc下面跑过,一点问题都没有,输出了 0 1 2 3 4 ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Aug 6 19:27:15 2008) 提到: 我提个小问题,你给的那个代码里面,main函数根本就没有用到上面定义的模板类啊。 不定义,也应该输出0,1,2,3,4 =。= ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 19:43:30 2008) 提到: 【 在 ericyosho 的大作中提到: 】 : 我提个小问题,你给的那个代码里面,main函数根本就没有用到上面定义的模板类啊。 : 不定义,也应该输出0,1,2,3,4 : =。= 囧一下...恐怕你没有看清楚 模板在上面 下面那段东西只是作为例子说明迭代器的初始化方法... 因为比较麻烦我就举了这个例子来代替 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 19:44:31 2008) 提到: 难道你想要全部的代码?几百行看起来很舒服? ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Aug 6 20:35:10 2008) 提到: 几百行也比没有强啊 =.= ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 21:26:08 2008) 提到: #ifndef CT_H #define CT_H #include"presets.h" typedef unsigned long int ULI32;//A Typedef of unsigned long int; /*The Foundation Template of Container*/ template<class Ty> class CT { public: CT(void):_tContent(0){}; virtual void _Debug()=0; protected: Ty _tContent; }; /*Part End*/ /*A vector-like Container*/ namespace Vector { template<class Ty> class vector:public CT<Ty> { public: vector():__pNext(0),__pPrevious(0),__iSum(1),__iNum(1){}; vector(ULI32 pubNum); vector(vector& pubVector); void pushback(Ty pubContent); void _Debug(void); void del(ULI32 pubNum); void insert(ULI32 pubNum,Ty pubContent); void replace(Ty pubOriContent,Ty pubAftContent); ULI32 counter(Ty pubContent); Ty max(void); Ty min(void); Ty& operator [](ULI32 pubNum); vector operator +(vector& pubVector); friend class iterator; protected: vector* __pPrevious; vector* __pNext; ULI32 __iSum; ULI32 __iNum; vector& __Index(ULI32 priNum); }; template<class Ty> vector<Ty>::vector(ULI32 pubNum) { vector* priTemp=this; __iSum=pubNum; __iNum=1; __pPrevious=0; for(ULI32 i=1;i<pubNum;i++) { priTemp->__pNext=new vector; (priTemp->__pNext)->__pPrevious=priTemp; priTemp=priTemp->__pNext; priTemp->__iSum=pubNum; priTemp->__iNum=i+1; priTemp->_tContent=0; }; priTemp->__pNext=0; }; template<class Ty> vector<Ty>& vector<Ty>::__Index(ULI32 priNum)//This part is prepared for iterator; { vector* priTemp=this; if(priNum>priTemp->__iSum||priNum<1) { _Error("Wrong range in indexing part!"); return *priTemp; }; ULI32 priCurrentNum=priTemp->__iNum; if(priNum>priCurrentNum) { for(ULI32 i=0;i<priNum-priCurrentNum;i++) { priTemp=priTemp->__pNext; }; return *priTemp; } else { for(ULI32 i=0;i<priCurrentNum-priNum;i++) { priTemp=priTemp->__pPrevious; }; return *priTemp; }; }; template<class Ty> void vector<Ty>::pushback(Ty pubContent) { ULI32 priCurrentNum=this->__iSum; this->__Index(this->__iSum).__pNext=new vector; (this->__Index(this->__iSum).__pNext)->__iNum=this->__Index(this->__iSum).__iSum+1; (this->__Index(this->__iSum).__pNext)->__iSum=this->__Index(this->__iSum).__iSum+1; (this->__Index(this->__iSum).__pNext)->__pNext=0; (this->__Index(this->__iSum).__pNext)->__pPrevious=&(__Index(__iSum)); (this->__Index(this->__iSum).__pNext)->_tContent=pubContent; for(ULI32 i=1;i<priCurrentNum+1;i++) { __Index(i).__iSum+=1; }; }; template<class Ty> void vector<Ty>::_Debug() { for(ULI32 i=1;i<=__iSum;i++) { std::cout<<__Index(i).__iNum<<' '<<__Index(i).__iSum<<' '<<__Index(i)._tContent<<' '<<__Index(i).__pPrevious<<' '<<&(__Index(i))<<' '<<__Index(i).__pNext<<std::endl; }; }; template<class Ty> vector<Ty>::vector(vector<Ty> &pubVector) { vector* priTemp=this; priTemp->__pPrevious=0; for(ULI32 i=1;i<pubVector.__iSum;i++) { priTemp->__iNum=i; priTemp->__iSum=pubVector.__iSum; priTemp->_tContent=(pubVector.__Index(i))._tContent; priTemp->__pNext=new vector; (priTemp->__pNext)->__pPrevious=priTemp; priTemp=priTemp->__pNext; }; priTemp->__iNum=pubVector.__iSum; priTemp->__iSum=pubVector.__iSum; priTemp->__pNext=0; priTemp->_tContent=(pubVector.__Index(pubVector.__iSum))._tContent; }; template<class Ty> void vector<Ty>::del(ULI32 pubNum)//I feel so upset and perplexed about this part; { if(pubNum>__iSum||pubNum<2) { _Error("Wrong range in deleting part!!!"); return; }; ULI32 priSum=this->__iSum; for(ULI32 i=pubNum;i<priSum;i++) { __Index(i)._tContent=__Index(i+1)._tContent; }; delete (__Index(priSum-1)).__pNext; (__Index(priSum-1)).__pNext=0; for(ULI32 i=1;i<priSum;i++) { (__Index(i)).__iSum-=1; }; }; template<class Ty> void vector<Ty>::insert(ULI32 pubNum, Ty pubContent) { if(pubNum>__iSum||pubNum<1) { _Error("Wrong range in inserting part!!!"); return; }; pushback(__Index(__iSum)._tContent); for(ULI32 i=__iSum;i>pubNum+1;i--) { __Index(i)._tContent=__Index(i-1)._tContent; }; __Index(pubNum+1)._tContent=pubContent; }; template<class Ty> void vector<Ty>::replace(Ty pubOriContent, Ty pubAftContent) { if(pubOriContent==pubAftContent) { return;//R U Kidding???; }; /* ******************* The way which I think a little bit less efficiency. Also the phenomenon presents in the parts above and below because my aim is just a play. In this part I wanna set up a special sample. for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent==pubOriContent) { __Index(i)._tContent=pubAftContent; }; }; */ vector* priTemp=&__Index(1);//The ideal alogrithm; for(ULI32 i=1;;i++) { if(priTemp->_tContent==pubOriContent) { priTemp->_tContent=pubAftContent; }; if(priTemp->__pNext==0) { return; }; priTemp=priTemp->__pNext; }; }; template<class Ty> ULI32 vector<Ty>::counter(Ty pubContent) { ULI32 priNum=0; for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent==pubContent) { ++priNum; }; }; return priNum; }; template<class Ty> Ty vector<Ty>::max(void) { Ty priContent(0); for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent>priContent) { priContent=__Index(i)._tContent; }; } return priContent; }; template<class Ty> Ty vector<Ty>::min(void) { Ty priContent=__Index(1)._tContent; for(ULI32 i=2;i<=__iSum;i++) { if(__Index(i)._tContent<priContent) { priContent=__Index(i)._tContent; }; } return priContent; }; template<class Ty> Ty& vector<Ty>::operator [](ULI32 pubNum) { if(pubNum>__iSum||pubNum<1) { _Error("Wrong range in operator[]!!!"); return __Index(__iSum)._tContent; }; return __Index(pubNum)._tContent; }; template<class Ty> vector<Ty> vector<Ty>::operator +(vector<Ty>& pubVector) { vector<Ty> priVector=*this; for(ULI32 i=1;i<=pubVector.__iSum;i++) { priVector.pushback(pubVector.__Index(i)._tContent); }; return priVector; }; template<class Ty> class iterator { public: iterator(vector<Ty>& pubVector) { _pointer=new Ty*[pubVector.__iSum]; for(ULI32 i=0;i<pubVector.__iSum;i++) { _pointer[i]=&pubVector.__Index(i); }; }; private: Ty** _pointer; }; }; /*Part End*/ #endif 如你所愿 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 21:26:50 2008) 提到: #ifndef PRESETS_H #define PRESETS_H #include"iostream" #include"fstream" /*All functions which is not related with the container and its derivers are set up in this head file*/ /*Exception Part*/ //Now here is a sample in Win Console environment with STL; template<class Ty> void _Error(Ty _message) { std::ofstream exception("exception.log",std::ios::app); std::cerr<<_message<<std::endl; exception<<_message<<std::endl; }; /*Part End*/ #endif ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Aug 6 22:29:46 2008) 提到: g++ -c 测试通过,可以编译出.o文件,没有任何告警或者错误提示。 ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Wed Aug 6 23:03:53 2008) 提到: vc08编译不通过... ☆─────────────────────────────────────☆ hmily821224 (笨笨猫) 于 (Thu Aug 7 00:31:28 2008) 提到: 问题应该出在这里: 你的Container里没有把友员类iterator申明成template,所以编译器报错说它不知道iterator到底是不是模板类。 参考解决方法: template<class T> class iterator; // forward declaration template<class T> Container { public: ... friend class iterator<T>; }; template<class T> iterator { ... }; 另外,有位网友说在gcc下可以编译通过... gcc下也应该不能通过。可能是因为你没有显示的实例化这个类,所以根本就没编译这段代码(而去编译别的代码了)。不信你写个main函数,里面实例化一个iteratro看看... 【 在 nplus 的大作中提到: 】 : #ifndef CT_H : #define CT_H : #include"presets.h" : ................... ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Thu Aug 7 00:46:59 2008) 提到: 【 在 hmily821224 的大作中提到: 】 : 问题应该出在这里: : 你的Container里没有把友员类iterator申明成template,所以编译器报错说它不知道iterator到底是不是模板类。 : 参考解决方法: : ................... 谢谢 关于GC的是正解 但是在container里改成 iterator<Ty> 还是不行但思路已经对了 应该在container类之前申明iterator 改为friend iterator<Ty> 完整代码是这样的 #ifndef CT_H #define CT_H #include"presets.h" typedef unsigned long int ULI32;//A Typedef of unsigned long int; /*The Foundation Template of Container*/ template<class Ty> class CT { public: CT(void):_tContent(0){}; virtual void _Debug()=0; protected: Ty _tContent; }; /*Part End*/ /*A vector-like Container*/ namespace Vector { template<class Ty> class iterator; template<class Ty> class vector:public CT<Ty> { public: vector():__pNext(0),__pPrevious(0),__iSum(1),__iNum(1){}; vector(ULI32 pubNum); vector(vector& pubVector); void pushback(Ty pubContent); void _Debug(void); void del(ULI32 pubNum); void insert(ULI32 pubNum,Ty pubContent); void replace(Ty pubOriContent,Ty pubAftContent); ULI32 counter(Ty pubContent); Ty max(void); Ty min(void); Ty& operator [](ULI32 pubNum); vector operator +(vector& pubVector); friend iterator<Ty>; protected: vector* __pPrevious; vector* __pNext; ULI32 __iSum; ULI32 __iNum; vector& __Index(ULI32 priNum); }; template<class Ty> vector<Ty>::vector(ULI32 pubNum) { vector* priTemp=this; __iSum=pubNum; __iNum=1; __pPrevious=0; for(ULI32 i=1;i<pubNum;i++) { priTemp->__pNext=new vector; (priTemp->__pNext)->__pPrevious=priTemp; priTemp=priTemp->__pNext; priTemp->__iSum=pubNum; priTemp->__iNum=i+1; priTemp->_tContent=0; }; priTemp->__pNext=0; }; template<class Ty> vector<Ty>& vector<Ty>::__Index(ULI32 priNum)//This part is prepared for iterator; { vector* priTemp=this; if(priNum>priTemp->__iSum||priNum<1) { _Error("Wrong range in indexing part!"); return *priTemp; }; ULI32 priCurrentNum=priTemp->__iNum; if(priNum>priCurrentNum) { for(ULI32 i=0;i<priNum-priCurrentNum;i++) { priTemp=priTemp->__pNext; }; return *priTemp; } else { for(ULI32 i=0;i<priCurrentNum-priNum;i++) { priTemp=priTemp->__pPrevious; }; return *priTemp; }; }; template<class Ty> void vector<Ty>::pushback(Ty pubContent) { ULI32 priCurrentNum=this->__iSum; this->__Index(this->__iSum).__pNext=new vector; (this->__Index(this->__iSum).__pNext)->__iNum=this->__Index(this->__iSum).__iSum+1; (this->__Index(this->__iSum).__pNext)->__iSum=this->__Index(this->__iSum).__iSum+1; (this->__Index(this->__iSum).__pNext)->__pNext=0; (this->__Index(this->__iSum).__pNext)->__pPrevious=&(__Index(__iSum)); (this->__Index(this->__iSum).__pNext)->_tContent=pubContent; for(ULI32 i=1;i<priCurrentNum+1;i++) { __Index(i).__iSum+=1; }; }; template<class Ty> void vector<Ty>::_Debug() { for(ULI32 i=1;i<=__iSum;i++) { std::cout<<__Index(i).__iNum<<' '<<__Index(i).__iSum<<' '<<__Index(i)._tContent<<' '<<__Index(i).__pPrevious<<' '<<&(__Index(i))<<' '<<__Index(i).__pNext<<std::endl; }; }; template<class Ty> vector<Ty>::vector(vector<Ty> &pubVector) { vector* priTemp=this; priTemp->__pPrevious=0; for(ULI32 i=1;i<pubVector.__iSum;i++) { priTemp->__iNum=i; priTemp->__iSum=pubVector.__iSum; priTemp->_tContent=(pubVector.__Index(i))._tContent; priTemp->__pNext=new vector; (priTemp->__pNext)->__pPrevious=priTemp; priTemp=priTemp->__pNext; }; priTemp->__iNum=pubVector.__iSum; priTemp->__iSum=pubVector.__iSum; priTemp->__pNext=0; priTemp->_tContent=(pubVector.__Index(pubVector.__iSum))._tContent; }; template<class Ty> void vector<Ty>::del(ULI32 pubNum)//I feel so upset and perplexed about this part; { if(pubNum>__iSum||pubNum<2) { _Error("Wrong range in deleting part!!!"); return; }; ULI32 priSum=this->__iSum; for(ULI32 i=pubNum;i<priSum;i++) { __Index(i)._tContent=__Index(i+1)._tContent; }; delete (__Index(priSum-1)).__pNext; (__Index(priSum-1)).__pNext=0; for(ULI32 i=1;i<priSum;i++) { (__Index(i)).__iSum-=1; }; }; template<class Ty> void vector<Ty>::insert(ULI32 pubNum, Ty pubContent) { if(pubNum>__iSum||pubNum<1) { _Error("Wrong range in inserting part!!!"); return; }; pushback(__Index(__iSum)._tContent); for(ULI32 i=__iSum;i>pubNum+1;i--) { __Index(i)._tContent=__Index(i-1)._tContent; }; __Index(pubNum+1)._tContent=pubContent; }; template<class Ty> void vector<Ty>::replace(Ty pubOriContent, Ty pubAftContent) { if(pubOriContent==pubAftContent) { return;//R U Kidding???; }; /* ******************* The way which I think a little bit less efficiency. Also the phenomenon presents in the parts above and below because my aim is just a play. In this part I wanna set up a special sample. for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent==pubOriContent) { __Index(i)._tContent=pubAftContent; }; }; */ vector* priTemp=&__Index(1);//The ideal alogrithm; for(ULI32 i=1;;i++) { if(priTemp->_tContent==pubOriContent) { priTemp->_tContent=pubAftContent; }; if(priTemp->__pNext==0) { return; }; priTemp=priTemp->__pNext; }; }; template<class Ty> ULI32 vector<Ty>::counter(Ty pubContent) { ULI32 priNum=0; for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent==pubContent) { ++priNum; }; }; return priNum; }; template<class Ty> Ty vector<Ty>::max(void) { Ty priContent(0); for(ULI32 i=1;i<=__iSum;i++) { if(__Index(i)._tContent>priContent) { priContent=__Index(i)._tContent; }; } return priContent; }; template<class Ty> Ty vector<Ty>::min(void) { Ty priContent=__Index(1)._tContent; for(ULI32 i=2;i<=__iSum;i++) { if(__Index(i)._tContent<priContent) { priContent=__Index(i)._tContent; }; } return priContent; }; template<class Ty> Ty& vector<Ty>::operator [](ULI32 pubNum) { if(pubNum>__iSum||pubNum<1) { _Error("Wrong range in operator[]!!!"); return __Index(__iSum)._tContent; }; return __Index(pubNum)._tContent; }; template<class Ty> vector<Ty> vector<Ty>::operator +(vector<Ty>& pubVector) { vector<Ty> priVector=*this; for(ULI32 i=1;i<=pubVector.__iSum;i++) { priVector.pushback(pubVector.__Index(i)._tContent); }; return priVector; }; template<class Ty> class iterator { public: iterator(vector<Ty>& pubVector) { _pointer=new Ty*[pubVector.__iSum]; for(ULI32 i=0;i<pubVector.__iSum;i++) { _pointer[i]=&pubVector[i+1]; }; }; private: Ty** _pointer; }; }; /*Part End*/ #endif ☆─────────────────────────────────────☆ nplus (nPlus) 于 (Thu Aug 7 00:53:30 2008) 提到: 再次感谢hmily821224学长 ☆─────────────────────────────────────☆ hmily821224 (笨笨猫) 于 (Thu Aug 7 01:05:29 2008) 提到: 不客气:)当年我也是经常为这种看似简单又不可忽视的问题所困扰:) 【 在 nplus 的大作中提到: 】 : 再次感谢hmily821224学长
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。