首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

c++一个基本的有关问题

2012-12-17 
c++一个基本的问题本帖最后由 qq6648208281 于 2012-11-24 16:48:47 编辑我又3个类分别为A类 B类D类申明先

c++一个基本的问题
本帖最后由 qq6648208281 于 2012-11-24 16:48:47 编辑 我又3个类  分别为A类 B类  D类  申明  先创建A类. 再创建B类 最够创建D类
请问谁能给我一个例子能互相调用?
就是几个类能互相使用  比如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类,A的头文件中声明Class B,然后A类声明定义中定义B类指针,在A的源文件中include B的头文件,就样就能通过了。仅参考


这样A能调用B类 。 。然户B类这样做 就会报错。。
[其他解释]
别忘了在B的头件中声明A类,在源文件中include A头文件
[其他解释]
可以前向声明。。。
------其他解决方案--------------------


#8 楼是正确的.  但是我现在不知道Class B; 和#include "B.h" 有什么不同? 能说说么.
[其他解释]

引用:
#8 楼是正确的.  但是我现在不知道Class B; 和#include "B.h" 有什么不同? 能说说么.


这个也是在MFC中用到时调了半天才找到这种方法,两者应该是编译时顺序不同

热点排行