两个类的互相引用问题

测试环境:Windos 7 ,Ide :VS2010

这里有5个文件,TestCpp.cppTestA.h/cppTestB.h/cpp

TestCpp.cpp

#include "stdafx.h"

 

#include "TestA.h"

#include "TestB.h"

 

int _tmain(int argc, _TCHAR* argv[])

{

         TestA *testA = new TestA;

         TestB *testB = new TestB;

 

         delete testA;

         delete testB;

         return 0;

}

TestA.h

#pragma once

 

#include "TestB.h"

 

class TestA

{

public:

         TestA(void);

         ~TestA(void);

private:

         TestB  *m_testB;

};

 

TestA.cpp

#include "StdAfx.h"

#include "TestA.h"

 

TestA::TestA(void)

{

}

 

TestA::~TestA(void)

{

}

 

TestB.h

#pragma once

 

class TestA;

class TestB

{

public:

         TestB(void);

         ~TestB(void);

private:

         TestA m_testA;

};

 

TestB.cpp

#include "StdAfx.h"

#include "TestB.h"

 

TestB::TestB(void)

{

}

 

TestB::~TestB(void)

{

}

 

总结:在两个类互相引用的情况下,正确的做法是

1、         TestA的类中添加TestB的头文件,并在TestA类中声明TestB的指针变量。

2、         TestB头文件中添加TestA的类声明,并在TestB类中声明TestA的实例变量。

这里我们的实例变量对应头文件,指针变量对应类声明。不可以两个类中都声明为类的实例变量,至少要求一个为指针变量,且保持正确的顺序,或者两个都是指针变量。

posted on 2013-09-16 23:25 cslover 阅读(662) 评论(0)  编辑 收藏 引用 所属分类: C++基础


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2013年9月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜