读书人

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

发布时间: 2012-03-09 16:54:57 作者: rapoo

两个类如何互为对方的成员
比如:
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类

读书人网 >C++

热点推荐