问题:
在一个类中调用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