C++之类成员相互引用问题

题:

在一个类中调用PacMan::keyStates数组,该数组是PacMan类的静态成员

在A类中是可以使用B类的静态成员变量的,那这个错误来自哪里?

解决:

原来在PacMan.h中#include”Game.h”,在Game.h中#include”PacMan.h”,将PacMan.h中的include去掉即可。

一探究竟:类成员之间的相互引用

//A.h
class A
{
 B b;
}

//B.h
class B
{
 A a
}

第一个问题,类之间的相互引用是不能出现都定义对象的。因为这样会陷入a b a b a b这种无限循环的状态中,因此在两者相互引用中,至少有一方是使用指针或者说两者都使用指针。

//A.h
#include "B.h"
class A
{
  int i;
  B b;
}

//B.h
#include "A.h"
class B
{
  int i;
  A* a;
}

第二个问题,两个类文件不能include彼此,会产生错误。解决方案是一边包含另一个类的头文档,另外一个采用前向声明class *,然后在他的实现文档里面包含头文件。

//A.h
#incldue "B.h"
class A
{
  int i;
  B b;
}

//B.h
class A;
class B
{
  int i;
  A* a;
}

//B.cpp
#include "A.h"

以上内容引用自:http://www.cnblogs.com/zendu/p/4987971.html

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇