类的成员函数可以互相调用吗?

LICHUNLI1022 2011-07-07 08:00:48
类的成员函数可以互相调用吗?
我在函数2中满足一定条件就转向函数3,并且同时结束函数2;而在函数3中,满足一定的条件就转向函数2,并同时结束函数3;同时在主函数中,满足一定条件会调用函数2,满足另外的条件会调用函数3;不知道这样的逻辑如何实现?会不会死循环呢?
...全文
2997 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckkyjtqlt 2011-07-12
  • 打赏
  • 举报
回复
某些成员函数间不能随便调用例如void Math::add(int a,int b)const
这类型的函数 只能调用同类型的函数 函数后面跟const
ok1234567 2011-07-12
  • 打赏
  • 举报
回复
不太可能在一个线程里实现,逻辑上不通,函数调用以嵌套方式运行,是一个栈模型
但是可以用多线程的方式调度处理:在函数中用启动线程开启程序段
bravetiger617 2011-07-09
  • 打赏
  • 举报
回复
没有明确你的需求呀,递归也得有结束条件呀
副组长 2011-07-09
  • 打赏
  • 举报
回复
这个需求好像是很特殊的。
楼主的意思是不想循环调用压进很多的栈,函数2调用3的时候把2结束就直接去3,不返回一去不回头。反过来3调用2也一样。
高级语言的函数应该没有这样的机制吧?
汇编应该比较容易实现,调用一个子例程不压栈,直接跳转过去,或者即使调用子例程压栈了,也可以在子例程里面清理掉。
都忘了,以前记得这个过程叫“交钥匙”还是什么来的。
LICHUNLI1022 2011-07-09
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。。
winning11xuhao 2011-07-08
  • 打赏
  • 举报
回复
如果你条件设置得当的话还是可以的
MarsDavid 2011-07-08
  • 打赏
  • 举报
回复
可以呀 只要给出退出条件就OK了!!
shiyunqiang 2011-07-08
  • 打赏
  • 举报
回复
同一个类内部的成员函数可以互相调用的。
tinghe17 2011-07-08
  • 打赏
  • 举报
回复
没问题 逻辑很清晰
向立天 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 lichunli1022 的回复:]

引用 18 楼 temsy 的回复:
C/C++ code
#include <iostream>
#include <ctime>
using namespace std;

class CPlayBall
{
public:
void redf();
void bluef();
CPlayBall();
private:
bool red ;
bool blue;……
[/Quote]
你想实现什么需求
你要的就是递归调用
只要控制好退出条件就可以
LICHUNLI1022 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 temsy 的回复:]
C/C++ code
#include <iostream>
#include <ctime>
using namespace std;

class CPlayBall
{
public:
void redf();
void bluef();
CPlayBall();
private:
bool red ;
bool blue;
……
[/Quote]
这样的话程序只能互调一次啊。
Temsy 2011-07-08
  • 打赏
  • 举报
回复
#include <iostream>
#include <ctime>
using namespace std;

class CPlayBall
{
public:
void redf();
void bluef();
CPlayBall();
private:
bool red ;
bool blue;
};


int main()
{
CPlayBall pb;
int a = (unsigned)time(NULL)%2;

if (a == 0)
{
pb.redf();
}
else
{
pb.bluef();
}
return 0;
}
void CPlayBall::redf()
{
cout<<"小红拍皮球!"<<endl;
red = true;
if (blue == false)
{
bluef();
}
}
void CPlayBall::bluef()
{
cout<<"小蓝拍皮球!"<<endl;
blue = true;
if (red == false)
{
redf();
}
}
CPlayBall::CPlayBall()
:red(false)
,blue(false)
{
}
不二星空 2011-07-08
  • 打赏
  • 举报
回复
可以,自己试试就知道了,要在函数结束的地方直接RETURN掉就好了,只要有个结束条件就没问题了
fangyc 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 q1q2q3q4ln 的回复:]
可以,但确实呀注意,死循环检测
[/Quote]同意
Temsy 2011-07-08
  • 打赏
  • 举报
回复
只要生成对象了,类的成员函数之间调用跟普通函数没有区别
这跟是不是类的成员函数没多大关系啊,把条件处理好了就不会死循环
icefairy 2011-07-08
  • 打赏
  • 举报
回复
可以死循环
LICHUNLI1022 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 q1q2q3q4ln 的回复:]
可以,但确实呀注意,死循环检测
[/Quote]
死循环检测???
czydxj 2011-07-08
  • 打赏
  • 举报
回复
没什么特别的呀,都是顺序执行的,不会出现死循环!
向立天 2011-07-08
  • 打赏
  • 举报
回复
你说这种嵌套是一种递归调用
只要处理好退出条件即可
关键是你自己逻辑要清晰
q1q2q3q4ln 2011-07-08
  • 打赏
  • 举报
回复
可以,但确实呀注意,死循环检测
加载更多回复(12)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧