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

两个类怎么互为对方的成员

2012-03-09 
两个类如何互为对方的成员比如:classA{public:Bm_b}classB{public:Am_a}如果我这样定义:classBclassA{p

两个类如何互为对方的成员
比如:
class   A
{
    public:  
        B   m_b;
}

class   B
{
  public:
    A   m_a;
}

如果我这样定义:

class   B;
class   A
{
    public:  
        B*   p_b;
        void   fun();
}

class   B
{
  public:
    A   m_a;
    void   funB();
}

是可以的,但是如果我在A的函数fun中:
void   A::fun()
{
    p_b-> funB();   //   error
}

请问该如何解决

[解决办法]
class B;
class A
{
public:
B* p_b;
void fun();
}

class B
{
public:
A m_a;
void funB();
}
放到.h中,
实现放到cpp文件中

[解决办法]
用指针
[解决办法]
在A的默认构造函数里p_b = new B;
拷贝构造函数p_b = new B(*(x.p_b));
析构函数里delete p_b;
[解决办法]
用指针,引用,即可以okokok
[解决办法]
将这两个类分别放在不同的头文件中,新建一个头文件,里面include这两个类的头文件,然后这两个类的头文件再包含着个头文件,哈哈,迷糊了吧,也就是说需要一个中间者进行协调。
[解决办法]
你这个程序的问题似乎不在类的声明上,请看一下下面的文章:

http://community.csdn.net/Expert/TopicView3.asp?id=5547203
[解决办法]
在C++Primer中有专门介绍的COPY构造函数的
LZ可以查一下
[解决办法]
friend class
[解决办法]
两种方法
1` 全局指针,在构造函数中p = this;
2` friend类

热点排行