c++一个基本的问题
本帖最后由 qq6648208281 于 2012-11-24 16:48:47 编辑 我又3个类 分别为A类 B类 D类 申明 先创建A类. 再创建B类 最够创—类
请问谁能给我一个例子能互相调用?
就是几个类能互相使用 比如B类使用A类中的方法.但是A类也要调用B类中的方法
上源码
#pragma once
#include "B.h"
class A
{
public:
A(void);
~A(void);
voidCallB(B* pB);
};
#pragma once
class B
{
public:
B(void);
~B(void);
void CallA(A * pA);
void CallC(D * pD);
};
#pragma once
class D
{
public:
D(void);
~D(void);
void CallB(B* pB);
};
#include "stdafx.h"
#include "A.h"
#include "B.h"
A::A(void)
{
}
A::~A(void)
{
}
#include "stdafx.h"
#include "B.h"
#include "A.h"
#include "D.h"
B::B(void)
{
}
B::~B(void)
{
}
#include "stdafx.h"
#include "B.h"
#include "D.h"
D::D(void)
{
}
D::~D(void)
{
}
[最优解释]
A类的头文件A.h:
#include "B.h"
class A{
B m_b;
....
}
A类的源文件A.cpp:
#include "A.h"
....
B类的头文件B.h:
class A;
class B{
A *m_a;
...
}
B类的文件B.cpp:
#include "A.h"
#include "B.h"
....
是这样用的吗?
[其他解释]
比如B类使用A类中的方法.但是A类也要调用B类中的方法
各自拥有对方的指针,方法都是public的
[其他解释]
有几种办法,如果是静态函数,那么可以直接调用,如果是成员函数,那么可以通过对象来进行调用。
[其他解释]
在A里声明个B类对象不就行了?
B b;
b.callA();
[其他解释]
没懂我的 意思额。。。 其实我现在的代码是报错的。
因为是类。 所以 可以弄成指针。。 关键是头文件怎么申明?
我这样写 其实我的思路我觉得是没问题的,但是他会报错。调用我是懂的,但是现在调用还没开始就报错了。
大家可以复制我的代码试试。。。
或者大家可以教我下 怎么把方法弄成指针?带参数的那种 因为我有时需要实时调用别的类的方法。
[其他解释]
1.友元类
2.
在A里面声明
B * b;
C* c;
找机会赋值就可以了。
[其他解释]
如A,B类,A的头文件中声明Class B,然后A类声明定义中定义B类指针,在A的源文件中include B的头文件,就样就能通过了。仅参考
[其他解释]
这样A能调用B类 。 。然户B类这样做 就会报错。。
[其他解释]
别忘了在B的头件中声明A类,在源文件中include A头文件
[其他解释]
可以前向声明。。。
------其他解决方案--------------------
#8 楼是正确的. 但是我现在不知道Class B; 和#include "B.h" 有什么不同? 能说说么.
[其他解释]
这个也是在MFC中用到时调了半天才找到这种方法,两者应该是编译时顺序不同