📄 subject_17790.htm
字号:
<p>
序号:17790 发表者:cmoth 发表日期:2002-10-15 16:30:04
<br>主题:使用模板出现的错误
<br>内容:我定义了如下的类:<BR>template <class T> <BR>class CObjectNode<BR>{<BR>};<BR><BR>template <class T><BR>class CObjectList<BR>{<BR> CObjectNode<T>* cFirstObjectNode;<BR>public:<BR> CObjectNode<T>* InsertNewNode();<BR>};<BR><BR>以上是想做一个双向连表,函数定义如下:<BR><BR>CObjectNode<T>* CObjectList<class T>::InsertNewNode()<BR>{<BR> return cFirstObjectNode;<BR>}<BR><BR>编译后出现以下错误:<BR>error C2065: 'T' : undeclared identifier<BR>error C2556: 'class CObjectNode *__thiscall CObjectList<class T>::InsertNewNode(void)' : overloaded function differs only by return type from 'class CObjectNode<class T> *__thiscall CObjectList<class T>::Inser<BR>tNewNode(void)'<BR> E:\MyProjects\concole\concole.cpp(16) : see declaration of 'InsertNewNode'<BR>error C2371: 'InsertNewNode' : redefinition; different basic types<BR> E:\MyProjects\concole\concole.cpp(16) : see declaration of 'InsertNewNode'<BR><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>
回复者:iwill 回复日期:2002-10-15 16:39:17
<br>内容:template <class T><BR>CObjectNode<T>* CObjectList<class T>::InsertNewNode()<BR>{<BR> return cFirstObjectNode;<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>
回复者:cmoth 回复日期:2002-10-15 16:42:06
<br>内容:各位大哥大姐把上面的几行拷到一个console工程里就可以看执行结果了,很方便的,帮帮忙啊。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-10-15 16:45:23
<br>内容:加上template <class T>后结果如下,少了一个错误:<BR><BR>error C2371: 'T' : redefinition; different basic types<BR>error C2039: 'InsertNewNode' : is not a member of 'CObjectList<class T>'<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>
回复者:秋叶禅 回复日期:2002-10-15 16:54:33
<br>内容:template<class T><BR>CObjectNode<T>* CObjectList<T>::InsertNewNode()<BR>{<BR> return cFirstObjectNode;<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>
<font color=red>答案被接受</font><br>回复者:iwill 回复日期:2002-10-15 16:57:43
<br>内容:可以写成内联,或者如下<BR>CObjectNode<class T>* CObjectList<T>::InsertNewNode()<BR>{<BR> return cFirstObjectNode;<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>
回复者:cmoth 回复日期:2002-10-15 17:11:19
<br>内容:谢谢iwill ,照你说的修改后,在console中可以了,但再我的工程中修改编译后出现以下连接错误:<BR> error LNK2001: unresolved external symbol "public: class CObjectNode<class CBmpObject> * __thiscall CObjectList<class CBmpObject>::InsertNewNode(void)" (?InsertNewNode@?$CObjectList@VCBmpObject@@@@QAEPAV?$CObjectNode@VCBmpObject@@<BR>@@XZ)<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>
回复者:徐景周 回复日期:2002-10-15 17:12:59
<br>内容:template < class T ><BR>T* GetSelectedGraph( NodeType nt )<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>
回复者:iwill 回复日期:2002-10-16 08:13:39
<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>
回复者:cmoth 回复日期:2002-10-16 09:09:52
<br>内容:呵呵,说得也是,我自己再看看吧,谢谢啦。
<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 + -