⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_50736.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:50736 发表者:songsyb 发表日期:2003-08-26 10:09:10
<br>主题:CArray与CList的问题
<br>内容:我在程序中写了下面一段代码:<BR>/*typedef vertex<BR>{<BR>//&nbsp;&nbsp;int a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int ncount;<BR>}VERTEX;<BR>*/<BR>//下面为程序源码<BR>&nbsp;&nbsp;VERTEX ver;<BR>&nbsp;&nbsp;CArray&lt;VERTEX,VERTEX&gt; m_Array;<BR>&nbsp;&nbsp;ver.ncount=-100;<BR>&nbsp;&nbsp;m_Array.Add(ver);<BR>&nbsp;&nbsp;VERTEX *p=&amp;m_Array.GetAt(0);<BR>&nbsp;&nbsp;p-&gt;ncount=-1234;<BR>&nbsp;&nbsp;ver=m_Array.GetAt(0);<BR>//调试到此处显示ver.ncount仍等于-100,而不是-1234,为什么呢?<BR>&nbsp;&nbsp;CList&lt;VERTEX,VERTEX&gt; m_List;<BR>&nbsp;&nbsp;ver.ncount=100;<BR>&nbsp;&nbsp;m_List.AddTail(ver);<BR>&nbsp;&nbsp;p=&amp;m_List.GetHead();<BR>&nbsp;&nbsp;p-&gt;ncount=1234;<BR>&nbsp;&nbsp;ver=m_List.GetHead();<BR>//调试到此处显示ver.ncount等于1234,说明m_List第一个元素<BR>//的ncount值由100改为1234<BR><BR>为什么按上面的方法能成功改变CList链表中元素的值,<BR>而对于CArrray就不行呢?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:shenjie 回复日期:2003-08-26 16:34:58
<br>内容:CArray::GetAt(0)返回的类型是VERTEX而不是VERTEX &amp;,因此你使用<BR>VERTEX *p=&amp;m_Array.GetAt(0);<BR> p-&gt;ncount=-1234;<BR>实际上并没有修改数组内元素的值,而是修改了由GetAt返回的临时无名变量的值.如果你需要修改数组中元素的值应该用m_Array[0]得到对应元素.<BR><BR>但是CList::GetHead的返回类型是VERTEX &amp;,因此你可以通过<BR>p=&amp;m_List.GetHead();<BR>p-&gt;ncount=1234;<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>
回复者:songsyb 回复日期:2003-08-27 21:39:11
<br>内容:谢谢!我还有一问,CArray的对象好像不能作为函数参数进行传递,CList的却可以,这是为什么呢?
<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>回复者:shenjie 回复日期:2003-08-27 22:25:34
<br>内容:这个我倒是没有注意过,可能是因为CArray没有拷贝构造函数造成的.但是你可以用CArray &amp;(引用)作为参数
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:songsyb 回复日期:2003-08-30 16:35:56
<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 + -