c++-C++中类A和类B如何相互调用

问题描述

C++中类A和类B如何相互调用

类A中有函数FunA1()调用类B中函数FunB1();而类B中的函数FunB2()又调用了类A中函数FunA1();
如何才能实现这样的功能???谢谢!
在A.h和A.cc文件中实现先声明B,然后用B的指针:
class B //B的声明
class A()
{
public:
FunA1();
{
b->FunB1();
}
private:
B *b;
}
在B.h和B.cc文件想调用A中函数:
class B()
{
public:
FunB1();
{
}
FunB2();
{
//想在这块儿调用A的函数FunA1(),如何才能实现?
}
~~
~~
private:
~~~~~~
}

解决方案

这样写应该可以,你试试。
class A
{
public:
void FunA1(){}
void FuncA2(){}
void FunA3(){b->funb1();}
private:
class B *b;

};
class B()
{
public:
void funb1(){}
void funb2(){
a->FunAa();
}
private:
class A a;
};


解决方案二:

以前做过测试,这种相互交叉使用,定义指针是可以的,定义对象不行。
例如:类A在B前定义

 class B;
 class A
 { public:
      B *pb;//合法
            B b;// 非法
}

class B
{
public:
  A a;//合法
    A *pa; //合法
};

解决方案三:

 class B; //先申明
class A
{
    public: void fa(bool x=false) {
            B b;
                if (!x) b.fb();
        }
};
class B
{
    public: void fb() {
            A a;
                a.fa(true);
        }
};
int main()
{
A a;
a.fa();
}

解决方案四:

在B类中声明A,调用方法a();
在A类中声明B,调用方法b();

解决方案五:

如果只有前置声明的话,那么就不能用对象的细节

解决方案六:

先声明,就是声明函数一样:在函数的实现前,使用函数头声明这个函数在后续定义。
类,也是一样的。先声明,可以防止编译出错。

时间: 2024-11-05 19:25:20

c++-C++中类A和类B如何相互调用的相关文章

python学习-Python类之间怎么相互调用?

问题描述 Python类之间怎么相互调用? 如果有两个类,第一个类想调用第一个类的函数或类里的对象该怎么办.python新手-- 解决方案 #import导入对应的模块,然后你就可以实例化类的对象,然后调用成员方法了 解决方案二: python类之间是怎么相互调用的两个.py之间类的相互调用问题 解决方案三: 来源: http://blog.csdn.net/liunian17/article/details/7318809?? 要调用一个类中的成员变量或函数,首先要创建一个它的对象或对象指针

java当中类里面嵌套类是内部类,那么方法嵌套方法是内部方法吗

问题描述 java当中类里面嵌套类是内部类,那么方法嵌套方法是内部方法吗 java当中类里面嵌套类是内部类,那么方法嵌套方法是内部方法吗内部类和内部方法有什么特点 解决方案 没有方法嵌套方法这种说法,方法只能相互调用,方法的定义只能在类中.内部类是依附外部类而存在的,通常是为了隐藏类的某些信息,没有听说过内部方法这个概念啊. 解决方案二: Java类的嵌套:外部类的方法不能访问内部类的变量Java 中的方法内部类[Java]内部类及其调用方法 解决方案三: 没有方法嵌套方法这种说法,方法只能相互

PHP中类属性与类静态变量的访问方法示例_php技巧

本文实例讲述了PHP中类属性与类静态变量的访问方法.分享给大家供大家参考,具体如下: <?php /* PHP类属性与类静态变量的访问 * Created on 2016-7-13 */ class test { const constvar='hello world'; static $staticvar='hello world'; function getStaticvar(){ return self::$staticvar; } } $obj=new test(); echo test

C#类中虚方法相互调用的潜在重载错误

错误    当我们编写基类虚方法时,需要注意一个问题,就是基类中虚方法的相互调用,有可能引起派生类重载时的潜在错误隐患.当然这个错误并不是C#语言设计的缺陷,而是一个不可避免的实现而已.当然如果我们是要编写通用的组建基类,就需要注意一下了.     或许我们刚开始做OOP的时候,对于有没有方法有没有virtual根本不在乎,很多是时候我们都重写了(rewrite)了基类方法.当然在需要确定重载(override)的时候,virtual关键字限定基类方法是不可少的.那么是不时我们就可以把基类的方法

基类和子类的调用顺序(C#,java)

现在关于oo的编程思想已经越来越被大家接受,但是大家对一些基础化的东西不是很熟悉,比如基类和子类的调用顺序.在这里我以c#为例给大家讲解一下对于一个下面一段代码 public class baseClass { public string a="baseClass" ; public baseClass() { a="初始化baseClass"; } } public class ExtendClass:baseClass { private string b=&q

详解Android中通过Intent类实现组件间调用的方法_Android

Intent是Android中用来调用其它组件的类,通过Intent,我们可以非常方便的调用Activity,Broadcast Receiver和Service. Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent); 上面这段代码可以用来调用第三方的Activity(启动第三方浏览器来打开百度首页

全局的类为什么不会调用析构函数呢?

问题描述 全局的类为什么不会调用析构函数呢? 从图中c1c2是全局变量,最后的运行结果中并没有调用析构函数释放,这是为什么呢 解决方案 全局类会调用析构函数,但是你在控制台看不到输出,这是因为调用的时机,此时程序已经和控制台分离了.为了证明它的确被执行了,你可以下一个断点,调试执行,那么会看到程序确实停在了析构函数上. 解决方案二: 析构函数什么时候会调用?为什么会两次调用析构函数

格式-关于Android项目中不同包之间的类相互调用

问题描述 关于Android项目中不同包之间的类相互调用 在同一个项目中我创建了几个包,然后在包 com.g.zxing.client.android中创建了类文件数据库MySQLiteOpenHelper我想在包com.g.zxing.client.android.result中的TextResultHandler.java调用MySQLiteOpenHelper格式如下import com.g.zxing.client.android.MySQLiteOpenHelper; public M

c++类,析构函数的调用问题

问题描述 c++类,析构函数的调用问题 c++中析构函数会被调用几次,什么时候调用,调用次数和什么有关 解决方案 C++中基类的虚析构函数问题C++析构函数的自动调用问题C++中基类中应该有虚析构函数 解决方案二: 一次,对象销毁时调用 解决方案三: 一次啦 1,如果用new运算符声明对象 ,在delete的时候会调用析构函数 2,如果不是的话,就在 }的时候调用 解决方案四: 一般是在你调用函数结束的时候,会去调用 解决方案五: 对象销毁的时候,除非i多次释放对象,否则,只应该一个对象调用一次