`

c++ #include 类互相包含问题

    博客分类:
  • c++
阅读更多
A.h文件
#ifndef _A_H_
#define _A_H_

#include"B.h"
static int count=0;

class A
{ 
public:
    void fun1();
}; 

#endif


B.h文件
#ifndef _B_H_
#define _B_H_

class A; //注意:这里是C++类的前向声明,没有用include“A.h”把对方加进来是考虑到了没有必要,因为最终两个类是要编译到一块

class B 
{
public:
    void fun2();
};
#endif


A.cpp文件
#include "stdafx.h"
#include "A.h"
#include <iostream>

using std::cout;
using std::endl;

void A::fun1()
{
    cout<<"a"<<endl<<count++<<endl;
    if(count==1000)
    {
        cout<<"太多了,停不下来了";
        getchar();
        exit(0);
    }
    B b;
    b.fun2();
}


B.cpp文件
#include "stdafx.h"
#include "A.h" //注意:这个地方没用B.h是考虑到了编译连接的顺序
#include <iostream>

using std::cout;
using std::endl;

void B::fun2()
{ 
    cout<<"b"<<endl<<count++<<endl;
    if(count==1000)
    {
        cout<<"太多了,停不下来了";
        getchar();
        exit(0);
    }
    A a;
    a.fun1();
}


main程序文件
#include "stdafx.h"
#include<iostream>
#include"A.h" //注意:这个地方没有include“B.h”但是下面用的了B类,说明B类头文件肯定在A.h中有include。

using std::cout;
using std::endl;

void main()
{
   A a;
   B b;
   a.fun1();
   b.fun2();
   getchar();
}
分享到:
评论

相关推荐

    C++中两个类互相包含的策略

     A类包含B类的实例,而B类也包含A类的实例  二、求解策略  1)错误的解法  A文件包含B,而B文件又包含A文件,这样形成死循环   #include "B.h"    class A  {   int i;...

    新手学习C++入门资料

    标准C++的iostream类库中包括了可以支持宽字符的类和对象。用wout替代cout即可。 #include iostream.h int main() { wchar_t wc; wc='b'; wout; wc='y'; wout; wc='e'; wout; return 0; } 说明一下...

    大学四年里编写的c或c++的代码.rar

    同一个程序中,可以同时使用C和C++编写代码,而且可以相互调用。 1. C++中调用C代码 这是最常用的情景,只需要在C++中用extern "C"包含C头文件即可。例如: extern "C“{ #include "stdio.h" } 2. C调用C++代码...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    全书围绕c++语言的结构来组织,开始章节介绍编程的普通概念,接下来详细介绍C++hh的继承、多态、异常处理以及标准模板库(STL),同时还包含模式和uML的介绍。本书内容系统、全面,给出了大量代码示例、自测练习、编程...

    websocket++简单使用及实例分析

    websocket++需要boost的支持,所以工程中需要包含boost的头文件和库。boost在VS中的如何使用参考此文章。 C++代码 #include stdafx.h #include using namespace std; #include &lt;websocketpp/config/asio_no_

    -C++参考大全(第四版) (2010 年度畅销榜

    这是一本关于C++语言的百科全书,包括C和C++的命令、功能、编程和应用等方面的内容。全书分为五个部分:C++基础:C子集;C++的专有特征;标准函数库;标准C++类库;C++应用程序范例。详细描述和演示了定义C++语言的...

    Visual C++ 数据库系统开发完全手册.part2

    2.6.1 #include文件包含指令 2.6.2 #define宏定义指令 2.6.3 条件编译指令 第3章 面向对象的程序设计 3.1 概述 3.1.1 面向对象程序设计方法 3.1.2 面向对象程序设计特征 3.2 C++面向对象程序设计基础 3.2.1 C++类的...

    Visual C++ 数据库系统开发完全手册.part1

    2.6.1 #include文件包含指令 2.6.2 #define宏定义指令 2.6.3 条件编译指令 第3章 面向对象的程序设计 3.1 概述 3.1.1 面向对象程序设计方法 3.1.2 面向对象程序设计特征 3.2 C++面向对象程序设计基础 3.2.1 C++类的...

    VC++开发中完美解决头文件相互包含问题的方法解析

    一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用于显示/修改一些信息。为了实现对话框”应用”按钮,...

    Google C++ 编码规范

    将包含次序标准化可增强可读性、避免隐藏依赖(hidden dependencies,译者注:隐藏依赖主要是指包含的文件中编译时),次序如下:对应该CPP的头文件、C库、C++库、其他库的.h、项目内的.h。 相同目录下头文件按字母...

    Thinking_in_C++_中文版【高清+可搜索+可编辑/复制/粘贴+无密码】

    t y p e i d ( )必须在所有的状况下都可以运行,比方说,下面的类中包含了一个嵌套类: 386 C + +编程思想 下载 } if(dynamic_cast*&gt;(shapes[u])) Nshapes++; cout • • 七angles="&lt;&lt; Nrects &lt;&lt; ...

    C++网络爬虫项目

    编写单位: 达内IT培训集团 C++教学研发部 编写人员: 闵卫 定稿日期: 2015年11月20日 星期五WEBCRAWLER 网络爬虫实训项目 2 1. 项目概述 互联网产品形形色色,有产品导向的,有营销导向的,也有技术导向的,但是 ...

    基于NMPC的无人艇定点控制与轨迹跟踪控制仿真C++源码+项目使用说明.zip

    casadi3.6.3 (linux,C++版本,用于求解NLP问题) matplotlibcpp (用于绘图,由于调用的是python的绘图,因此需要安装python和相应的python绘图库) # 2 项目构建 在主目录下创建文件夹rosusv_ws:mkdir ...

    语言程序设计课后习题答案

    C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...

    浅析VC++中的头文件包含问题

    在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用(不满足继承关系,而是组合关系)。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的...

    QT实现经典90坦克大战游戏,满分毕业设计,附说明文档,小白必看!

    一、环境 - 语言:C++ - 编译器:gcc version 7.3.0 - 应用程序开发框架:Qt...后来经过跟踪报错发现子弹类包含了一个map数组,而坦克类中也有map数组,两者分开是不会互相影响的,但把这两个对象放到Widget对象中就

    simbody:高性能C ++多体动力学物理库,用于仿真铰接式生物力学和机械系统,例如车辆,机器人和人体骨骼

    Simbody是一个高性能,开放源代码的工具包,用于对关节机构进行科学和工程质量的仿真,包括生物力学结构(例如人和动物的骨骼),机械系统(例如机器人,车辆和机器)以及任何其他可以描述的内容一组由关节相互连接...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    RINGSDK包含界面库和图象库。

    9、窗口类之间的互相访问: 因为窗口类声明时就产生了一个类对象指针,因此可以用这个指针来访问其他窗口,比如弹出了一个对话框,在这个对话框内部: 可以调用window-&gt;somefunction来调用或访问主窗口的函数或数据...

    你必须知道的495个C语言问题

    1.15 如何定义一对相互引用的结构? 1.16 Struct{ }x1;和typedefstruct{ }x2;这两个声明有什么区别? 1.17 “typedefint(*funcptr)();”是什么意思? const限定词 1.18 我有这样一组声明:typedefchar*...

Global site tag (gtag.js) - Google Analytics