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

📄 subject_31504.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:31504 发表者:star_jj 发表日期:2003-03-04 23:07:17
<br>主题:A*&nbsp;&nbsp;ary = new A[10];&nbsp;&nbsp;A* a= new A( );&nbsp;&nbsp;ary[0]=a, 为什么错了?
<br>内容:我的程序里有这样的code:<BR><BR>Fascicle* fasAry = new Fascicle[100];<BR><BR>Fascicle* fas = new Fascicle();<BR><BR>fasAry[0] = fas;<BR><BR>compile 的时候出现以下错误:<BR>error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class Fascicle *' (or there is no acceptable conversion)<BR><BR><BR><BR>请问是什么原因啊?<BR>我不熟悉c++ ,请问上面的code因该怎样写才正确啊?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-03-04 23:20:27
<br>内容:Fascicle* fasAry = new Fascicle[100];&nbsp;&nbsp;//fasAry代表一个对象数组,fasAry[i]为一个对象<BR><BR>Fascicle* fas = new Fascicle();&nbsp;&nbsp;//fas 是一个对象的指针<BR><BR>fasAry[0] = fas;&nbsp;&nbsp;//将一个对象的指针赋给一个对象,此operator = 没有定义(除非重载=让其具有该功能)<BR><BR>根据你的意思,这样:<BR>Fascicle* fasAry[100];<BR><BR>Fascicle* fas = new Fascicle();<BR><BR>fasAry[0] = fas;<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>
回复者:star_jj 回复日期:2003-03-05 00:18:00
<br>内容:tjhe, 谢谢你指出我的问题。 <BR><BR>因为我以前是学java的, 所以总是对C++的pointer很头疼。我还有个问题请教,我有一个function要读进楼上的那个array : fasAry 和这个array的size. return 一个新的array.<BR><BR>Line1&nbsp;&nbsp; Fascicle*[] OperationMain::extendArray(Fascicle*[] fary, int size)<BR>Line2&nbsp;&nbsp; {<BR>Line3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fascicle* fbry[size+100];<BR>Line4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0; i&lt;size; i++)<BR>Line5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fbry[i] = fary[i];<BR><BR>Line6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete fary;<BR>Line7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fbry;&nbsp;&nbsp;&nbsp;&nbsp;<BR>Line 8&nbsp;&nbsp;}<BR><BR>我的line1里面的 return type "Fascicle*[]"写得对吗? 就是指一个装Fascicle* 的array.:$<BR><BR>在OperationMain.h里面相应的 prototype<BR>&nbsp;&nbsp;&nbsp;&nbsp;Fascicle*[] extendArray( Fascicle*[]&nbsp;&nbsp;, int );<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>
回复者:xiongli 回复日期:2003-03-05 01:19:53
<br>内容:你编译一下就可以了<BR>不过对于数组,c++是当成const pointer来处理的,就是说这个pointer不能去指向别的东西,所以对于type *[] 就等于是 type **<BR>所以在main(int argc,char *argv[])===main(int argc,char **argv)<BR>所以return type 最好是type **
<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>回复者:tjhe 回复日期:2003-03-05 10:16:54
<br>内容:Fascicle*[]&nbsp;&nbsp;//表达是错误的,<BR>delete fary; //fary是局部数组变量,不能delete<BR>return fbry; //fbry是局部数组变量(元素类型Fascicle*),返回时退化成Fascicle**,<BR>//实际上无法返回数组(因为相当于返回局部变量的地址)<BR><BR>//可以如下:<BR>typedef Fascicle*&nbsp;&nbsp;PFASCICLE;&nbsp;&nbsp;//这样使程序更易读<BR><BR>FASCICLE* OperationMain::extendArray(FASCICLE fary[], unsigned int oldsize, unsigned int addsize)<BR>{<BR>&nbsp;&nbsp; if(oldsize &lt; addsize) //此处应该保证addsize的大小合法,不然以下的循环回出现非法访问<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return NULL;<BR>&nbsp;&nbsp; FASCICLE* fbry = new FASCICLE[addsize+oldsize];&nbsp;&nbsp;//堆上申请内存<BR>&nbsp;&nbsp; for(int i=0; i&lt;addsizee; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fbry[i] = fary[i];&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp; return fbry;&nbsp;&nbsp;&nbsp;&nbsp;<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>
回复者:star_jj 回复日期:2003-03-05 15:05:15
<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>
回复者:star_jj 回复日期:2003-03-05 15:53:46
<br>内容:可是为什么不能 delete fbry 呢?<BR>这个fbry以后都不会用到了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:star_jj 回复日期:2003-03-05 15:55:24
<br>内容:错了错了, 为什么不能delete fary.<BR><BR>fary 好像不是局部变量吧
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-03-05 16:05:40
<br>内容:fary是数组,不用delete删除。<BR><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 + -