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的话,在C2.h中就不能再写C1 pc1,会形成重复创建,可以在C2.h中写C2 *pc2 void showC1();
};

C1.cpp

#include "StdAfx.h"
#include "C1.h"
#include <iostream>
using namespace std; C1::C1()
{
pc2 = new C2(this);
} C1::~C1()
{
} void C1::showC1()
{
cout<<"showC1"<<endl;
}

C2.h

#pragma once

class C1;//C1.h已经include C2.h,C2.h就不能再include C1.h,这里只声明class C1;
class C2
{
C1 *cc1;
public:
C2(C1 * p);
~C2();
void showC2();
};

C2.cpp

#include "StdAfx.h"
#include "C2.h"
#include "C1.h"//因为C2.h中没有include C1.h只对C1类做了声明,所以要使用C1 *p只能在C2.cpp中include C1.h
#include <iostream>
using namespace std; C2::C2(C1* p)
{
cc1 = p; } C2::~C2()
{
} void C2::showC2()
{
cc1->showC1();//如果C2.h和C2.cpp都没引用C1.h,这里会报错pointer to incomplete class is not allowed
cout<<"showC2"<<endl;
}

C++两个类相互引用错误留影的更多相关文章

  1. Cocos Creator两个类相互引用(调用)

    如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:///////////Game.jsvar Item = require("Item");var Ga ...

  2. c++中两个类相互包含引用的相关问题

    在构造自己的类时,可能会遇到两个类相互引用的问题. 例如: class A { int i; B b; }; class B { int i; A a; }; 在这种情况下,这样就会出现一个死循环a. ...

  3. C++中两个类相互包含引用问题

    在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } class B { in ...

  4. 多态时最好将基类的析构函数设为virtual、 C++中两个类相互包含引用问题 (转载)

    多态:http://blog.csdn.net/tmljs1988/article/details/8146521 C++中两个类相互包含引用问题:http://blog.csdn.net/leo11 ...

  5. 关于node中两个模块相互引用却不会死循环的问题

    关于node中两个模块相互引用却不会死循环的问题 node中是通过require来导入加载模块的,require有两个作用: 1.加载文件模块并执行里面的代码 2.拿到被加载文件模块导出的接口对象 现 ...

  6. C++两个类相互包含引用的问题

    在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; } class B { A* a; } 请 ...

  7. c++中两个类互相引用的问题

    最近在改一个C++程序的时候碰到一条警告信息,警告信息为:“ 删除指向不完整“Q2DTorusNode”类型的指针:没有调用析构函数                1> c:\users\lxw ...

  8. c++两个类相互调用

    有可能会碰到两个类之间的相互调用的问题,例如:定义了类A和类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; }; class B { A a; }; 编译器在声明A ...

  9. C++中两个类相互include的问题

    在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 例如: Cup.h #ifndef CUP_H #define CUP_ ...

随机推荐

  1. iOS开发- OpenGL ES屏幕截图

    之前写过一个常规的屏幕截图:http://blog.csdn.net/hitwhylz/article/details/17189351 可是发现这个办法对于OpenGL 无用.  获取到的数据为空. ...

  2. EasyDarwin开源社区流媒体视频课程:流媒体传输控制协议(RTSP RTP SDP)详解之sdp

    视频课程及相关文档代码地址:https://github.com/EasyDarwin/Course#course-3 SDP协议 一.SDP协议介绍 SDP 完全是一种会话描述格式(对应的RFC23 ...

  3. java之折半查找

    //功能:二分查找import java.util.*; public class Demo1 { public static void main(String[] args) { int arr[] ...

  4. 大数据之ES系列——第一篇 ElasticSearch2.2 集群安装部署

    第一部分  安装准备 准备三台主机节点: hc11.spads  192.168.160.181 hc12.spads  192.168.160.182 hc13.spads  192.168.160 ...

  5. 2018年东北农业大学春季校赛 D wyh的迷宫 【BFS】

    题目链接 https://www.nowcoder.com/acm/contest/93/D 思路 BFS模板题 AC代码 #include <cstdio> #include <c ...

  6. Gym - 101147E E. Jumping —— bfs

    题目链接:http://codeforces.com/gym/101147/problem/E 题意:当人在第i个商店时,他可以向左或向右跳di段距离到达另一个商店(在范围之内),一个商店为一段距离. ...

  7. iOS 键盘遮挡输入框万能解决方案(多个输入框)

    效果图如下: 思路分析: 代码: 知识点: 问题: 效果图如下: 思路分析: 当我们有很多输入框时,有时候键盘弹出来会遮挡着输入框.我们需要获取输入框和键盘相对于最外层视图的位置来判断是否遮挡,如果遮 ...

  8. BestCoder7 1002 Little Pony and Alohomora Part I(hdu 4986) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4986 题目意思:有 n 个box(从左到右编号依次为1~n),每个box里面有一个随机的钥匙,有可能这 ...

  9. hdu-5724 Chess(组合游戏)

    题目链接: Chess Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Pro ...

  10. CISCO-从TFTP上上传/下载配置文件

    1.下载配置文件到TFTP服务器: 2.上传配置文件到路由器