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. P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  2. 2018.11.06 生成器函数进阶&列表推导式&生成器表达式

    1.生成器函数进阶 2.列表推导式 3.生成器表达式

  3. 九度OJ 1101:计算表达式 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4340 解决:1335 题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结 ...

  4. The basic principle of test case 修改引擎

    The basic principle of test case evaluation is that output resulting from running a test case is com ...

  5. 阻止SSIS import excel时的默认行为

    为什么SSIS总是错误地获取Excel数据类型,以及如何解决它! 由Concentra发布 2013年5月15日 分享此页面 分享   发现Concentra的分析解决方案 Concentra的分析和 ...

  6. 深入Vue.js从源码开始(二)

    从入口开始 我们之前提到过 Vue.js 构建过程,在 web 应用下,我们来分析 Runtime + Compiler 构建出来的 Vue.js,它的入口是 src/platforms/web/en ...

  7. uboot显示logo的时候发现颜色偏黄【学习笔记】

    平台信息:内核:linux3.0.68 系统:android6.0平台:rk3288 将一张图片烧录进logo分区,发现在uboot读取这张图片并显示的时候发现颜色偏黄,解决办法,在烧录bmp图片的时 ...

  8. x264 --fullhelp

    >x264 --fullhelp x264 core: Syntax: x264 [options] -o outfile infile Infile can be raw (in which ...

  9. 纯js实现省市级联效果

    我们都知道一般有注册的时候会让用户填入省市啊地区什么的,然后我就想使用纯js制作一个省市级联的效果,只是用于学习以及回顾温习用,首先看下效果图,界面很丑啊,不要嫌弃! 首先还是先看下我的项目目录吧 很 ...

  10. observer远程监控服务器

    因为需要监控服务器的状况,所以要使用工具observer.但是observer是采用wxWidget开发的,远程机器没有此环境.于是在windows机器上装了虚拟机ubuntu,又折腾erlang和w ...