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

📄 subject_48269.htm

📁 vc
💻 HTM
字号:
<p>
序号:48269 发表者:mesen 发表日期:2003-07-29 21:43:48
<br>主题:同志们呢,我的函数指针怎么就是不接受我赋的值呢?那么大侠帮我搞个明白!
<br>内容:我用的VC60,用多文档写程序。<BR>我生成一个函数指针:<BR>int (*pFunction)(int a,int b);<BR>再生成了一个函数:<BR>int teach(int a,int b);<BR>然后我给函指针赋值:<BR>pFunction = teach;<BR>编译时出错!!!!该死的错误,怎么就会错了呢??<BR><BR>按C++书上说的应该是可以的,我几乎和那书上的例子一模一样,可怎么就不行呢?怎么会错了呢,这该死的编译规则
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-07-29 22:58:48
<br>内容:没错呀,我调试了,很正常呀!<BR>代码如下:<BR>int (*pFunction)(int a,int b);<BR><BR>int teach(int a,int b)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;return a+b;<BR>}<BR>void CMainFrame::OnEditCopy() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your command handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;pFunction = teach;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i=pFunction( 6 , 9 );<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>
回复者:mesen 回复日期:2003-07-30 00:12:52
<br>内容:我看了一些文章,不知道是不是因为我我的teach函数是在CDoc类中生成的原因。如果是的话就麻烦了。我要用函数指针的方法给绘图函数改变取值的函数,以使绘图函数可以绘所指向函数所取得的值,如果不能用函数指针来指向类中创建的函数,那还有什么办法可以实现把函数做为参数的方法呢???
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-07-30 00:17:54
<br>内容:你的teach函数是CDoc中的函数,那你试试这样可以吗,<BR>&nbsp;&nbsp;pFunction =myDoc-&gt;teach;但要保证在调用pFunction函数前不要释放myDoc。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-07-30 00:21:41
<br>内容:你还可以将这个函数做成DLL的方式来处理
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-07-30 11:07:27
<br>内容:<BR>C:\Windows\Desktop\Jjjl0512\KLineView.cpp(56) : error C2440: '=' : cannot convert from 'unsigned long (__thiscall CJjjl0512DocK::*)(int,int)' to 'unsigned long (__cdecl *)(int,int)'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There is no context in which this conversion is possible<BR><BR>我试图直接将类成员函数赋给指针函数:<BR>pFunction = CJjjl0512DocK::Average;&nbsp;&nbsp;//给函数指针赋值<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>
回复者:mesen 回复日期:2003-07-30 12:54:24
<br>内容:其实我也想用动态链接的方式来调用函数,我可我的函数是用来处理已有CDoc中的数组成员中所含的数据的,如果用动态链接的话,我怕就没办法处理CDOC中的数组成员了。 那样的话我的程序整个都得重新设计。有点心疼呀!!<BR>mero麻烦利用你的所知给出出主意。 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-07-30 13:37:32
<br>内容:用动态链接程序可以调用原来应用程序中CDOC中的数组吗??我的脑子有点不开巧,我觉得应该是可以的,可就是想不明白怎么做!!帮忙给指点指点!
<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>回复者:米罗 回复日期:2003-07-30 15:13:15
<br>内容: = CJjjl0512DocK::Average;<BR>在调用以上语句之前,你要保证CJjjl0512DocK类是已占内存空间的,就是要么是局部变量要么是全局变量,反正就是个活得。并且要一直保持在pFunction释放后才释放。 不知你试没试这种方法?他应该是可以的呀!<BR><BR>2、既然函数是处理已有CDoc中的数组成员中所含的数据的,为什么你不在CDoc写一个处理函数,直接调用他不就是了?是不是CDoc和CJjjl0512DocK不是同一个类?要是这样的话,你也可以写个全局函数,来处理这两个文档类的数据就可以了!<BR><BR>3、要是你不线麻烦的话可以可以将数据写到一个文件中,然后再在处理函数中读出并处理,再写回吧!呵呵...
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-07-30 15:25:08
<br>内容:谢谢mero,费了你这么多时间,能后有机会请你吃饭,哈。<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>
回复者:mesen 回复日期:2003-07-30 15:37:13
<br>内容:我不想用全局函数,要不然我就得把所有这几个函数要调用的数据都得设成全局变量,这些全局变量中还有几个结构数组,这样的话,结构数组的初始化函数也就得搞成全局函数,其要调用的数据也得搞成全局变量……,这样麻烦就大了。<BR>我还是按你的建议改用动态链接吧,大不了把程序重新清理一遍,把调用数组成员的函数全提出来放到DLL中,CDOC中仅保存几个数组和几个必须的变量就是了,其实这样也好,把数据的读出功能放在CDOC的专门向数组中读数的函数中,把读出的数据放在CDOC的结构数组中,把结构数组的调用功能函数全放在动态链接库中,把绘图全放在CVIEW的ONDRAW()先这样试试吧。<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>
回复者:米罗 回复日期:2003-07-30 15:43:12
<br>内容:真不好意思,没有完全的帮你解决问题,你还把分给我了,谢谢!<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 + -