C++两个类相互包含引用的问题】的更多相关文章

多态:http://blog.csdn.net/tmljs1988/article/details/8146521 C++中两个类相互包含引用问题:http://blog.csdn.net/leo115/article/details/7395077 http://blog.csdn.net/tmljs1988/article/details/6081132…
在构造自己的类时,可能会遇到两个类相互引用的问题. 例如: class A { int i; B b; }; class B { int i; A a; }; 在这种情况下,这样就会出现一个死循环a.b.a.b.a.b....,一般来说,应避免这种情况. 如果确实需要的话,一般来说,至少有一方需要定义成指针. 例如: class A { int i; B b; }; class B { int i; A* a; }; 如果按照以上的方式,既然存在互相引用,就必须互相包含头文件,如果仅仅是在自己的…
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } class B { int i; A* a; } 请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子: class A { int i; B b; } class B { int i; A a; } 在这种情况下,想想能够有a.b.a.b.a.b.a.b.a.b…………,很有点子子孙孙无穷…
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; } class B { A* a; } 请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子: class A { B b; } class B { A a; } 编译器在声明A的时候,由于B的声明在A的下面所以出现编译错误 那么,在定义时因为相互引用肯定会需要相互包含头文件,如果仅仅只是在各自的头文件中包含…
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:///////////Game.jsvar Item = require("Item");var Game = cc.Class({properties: {item: {default: null,type: Item //用 Item 对象}}});module.exports = Game; //////////Item.jsvar Game = require("Game");va…
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 例如: Cup.h #ifndef CUP_H #define CUP_H #include "Box.h" class Cup { public: ~Cup(); Box b; Cup(); }; #endif // CUP_H Cup.cpp #include "Cup.h" #include <iostream> usin…
有可能会碰到两个类之间的相互调用的问题,例如:定义了类A和类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; }; class B { A a; }; 编译器在声明A的时候,由于B的声明在A的下面所以出现编译错误 那么,在定义时如果要相互调用肯定会需要相互包含头文件,如果仅仅只是在各自的头文件中包含对方的头文件,是通不过编译的: //a.h #include"b.h" class A { public: B xianghuInA; }; //b.h #…
先记录一些零碎的知识点: 1. 一个类可以被声明多次,但只能定义一次,也就是可以 class B;  class B;  class B; ……;  class B {……};  这样子. 2. 一个类 C 的声明中(函数只声明还没定义)可以使用一个只被声明还没定义的类 B,但只能使用类 B 的指针或引用(用作函数参数或其他等等),不能是完整的对象. 3. 若类 C 的函数中需要使用到类 B 的函数,则类 B 的函数必须已定义好而不能只是声明. #include<iostream> class…
在阅读大牛代码的时候发现了这个问题,之所以标题以问号开头,是因为我还没搞懂这个问题.权当记录,以希望以后搞懂. 部分图片转贴吧:http://tieba.baidu.com/p/6015910029 比如这样是不行的,图来自贴吧: 诉求是在不添加属性.方法和改变访问权限的基础上互相访问私有字段. 路人甲: 1 C# 友元方法有啊.我记得是修改[assembly: InternalsVisibleTo("类名")],这个在assemblyInfo.cs中,之前我使用过.2 通过反射可以直…
java中类相互引用很方便,c++中有编译顺序的问题 c++声明作用,告诉编译器,我声明的东西你要是找不到,那就跳过去吧,等全编译完你就可以找到了. C1.h #pragma once #include "C2.h" //C1.h要包含C2.h,C2.h也要包含C1.h时,//要在类C2.h的定义前加上另一个类的声明class C1;,//否则编译时后编译的类找不到先编译的类. class C1 { public: C1(); ~C1(); C2 *pc2;//㈡这里要是写C2 pc2…