📄 subject_57502.htm
字号:
<p>
序号:57502 发表者:wangyy 发表日期:2003-10-26 10:16:54
<br>主题:关于模板类
<br>内容:一个自定义数组类<BR>Template<class TYPE,class,ARG_TYPE><BR>class CMyArray<BR>{<BR>public:<BR>TYPE *m_pData<BR>}<BR>其中TYPE支持double int 等数值类型。<BR>大部分的函数也是支持这些类型的。而有一部分函数只支持int,为防止编译出错,有没有编译时或运行时类型判别(MFC的运行时类除外),如类似:<BR>if (TYPE==int)<BR>...<BR>else<BR>...<BR>或者其他方法。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:doggo 回复日期:2003-10-26 12:48:48
<br>内容:应该不存在类似于TYPE==int的判断,因为模板不能预知到底会是什么类型。<BR>如果模板的某个函数针对特定的类型需要进行的特殊的处理的话只要在这个模板类中针对该类型专门写一个函数即可,即:数据类型明确指明是什么类型。也就是说,用模板形式提供一个大多数类型都可以用的函数,对于特殊的类型提供特殊的函数。具体的找本C++的书看看模板部分即可。<BR>如果某个函数只能针对很少的数据类型进行处理,我觉得不应该放到模板中去。<BR>个人观点供参考!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:LuckGood 回复日期:2003-10-27 13:17:53
<br>内容:为什么要区分int,double什么的?如果会因类别不同,有不同的行为,那就不能封装为一个模板类。模板类的目的是要抽象和封装相同的属性和行为,与类型无关。我看你的类根本不需要有这种区分的。<BR>Template<class TYPE,class><BR>class CMyArray<BR>{<BR>public:<BR>TYPE *m_pData; // array<BR>CMyArray(){m_pData = NULL; m_nCount = -1;};<BR>CMyArray(size_t nCount){m_pData = new TYPE[m_nCount];};<BR>bool assign(size_t nCount){m_nCount = nCount;m_pData = new TYPE[m_nCount];};<BR>//...// other functions<BR>~CMyArray(){if(m_pData) delete m_pData;};<BR>private:<BR>size_t m_nCount;//element count<BR>}<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wangyy 回复日期:2003-11-02 10:16:09
<br>内容:还是关于模板类:<BR> 1、模板类和她的实现定义好后,在没有实例化时,能否编译通过。<BR> 2、模板类的构造函数如何调用:如<BR>template<class TYPE><BR>class CMyClass<BR>{<BR>public:<BR> CMyClass(TYPE *e);<BR> TYPE* pData;<BR>};<BR>CMyClass<TYPE>::CMyClass(TYPE* e)<BR>{<BR> pData=e;<BR>}<BR>现在实例化:<BR>CMyArray<TYPE> *pArray;<BR>pArray=new CMyArray<TYPE>(...);<BR>还是:<BR>pArray=new CMyArray(...);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -