这里说一下我一开始犯的错误

在这一步是我头文件创建的是cpp,导致后面一直报错,我还不知道错在哪,简直哭唧唧!!!
以点跟圆的关系为例
创建了一个圆类和点类(请不要学我不会英语打拼音,我是英语渣渣呜呜呜)
下面是完整源码

#include <iostream>
using namespace std;class point //点
{private:int x;int y;
public://设置void setx(int mx){x = mx;}//获取int getx(){return x;}void sety(int my){y = my;}int gety(){return y;}
};class yuan
{private:int r;//半径//在类中可以让另一个类成为本类成员point center;//圆心
public://设置圆半径void setr(int mr){r = mr;}//获得圆半径int getr(){return r;}//设置圆心void setcenter(point mcenter){center = mcenter;}//获得圆心point getrenter(){return center;}
};//判断点和圆的关系函数
void panduan(yuan &c,point &p) //用地址传节省空间
{//两点之间距离的平方(圆心到点的距离的平方)double d1 = (c.getrenter().getx() - p.getx()) * (c.getrenter().getx() - p.getx()) +(c.getrenter().gety() - p.gety()) * (c.getrenter().gety() - p.gety());//半径的平方double d2 = c.getr() * c.getr();if (d1 == d2){cout << "点在圆上" << endl;}else if (d1 < d2){cout << "点在圆内" << endl;}else{cout << "点在圆外" << endl;}
}int main()
{//创建圆yuan c;c.setr(10);point center;center.setx(10);center.sety(0);c.setcenter(center);point p;p.setx(10);p.sety(0);panduan(c, p);//创建点system("pause");return 0;
}

下面就是拆分
分步重要解释我写在代码中了嗷
1.创建点类头文件(h)

#pragma once//防止头文件重复声明
#include <iostream>
using namespace std;//删除所有函数实现,只保留函数声明和变量声明,并加上分号
class point //点
{private:int x;int y;
public://设置void setx(int mx);//获取int getx();void sety(int my);int gety();
};

2.创建点类源文件(cpp)

#include "point.h"//包含这个头文件下面的函数才能用//留下函数实现
//设置
void point::setx(int mx)  //point::   point作用域下的函数
{x = mx;
}
//获取
int point::getx()
{return x;
}void point::sety(int my)
{y = my;
}
int point::gety()
{return y;
}

圆类同理
注意中间加了point的头文件,因为中间用了点类

#pragma once
#include <iostream>
using namespace std;
#include "point.h"  //point头文件class yuan
{private:int r;//半径//在类中可以让另一个类成为本类成员point center;//圆心
public://设置圆半径void setr(int mr);//获得圆半径int getr();//设置圆心void setcenter(point mcenter);//获得圆心point getrenter();
};
#include"yuan.h"//设置圆半径void yuan::setr(int mr){r = mr;}//获得圆半径int yuan::getr(){return r;}//设置圆心void yuan::setcenter(point mcenter){center = mcenter;}//获得圆心point yuan::getrenter(){return center;}

创建好后在主函数中的使用
加上俩头文件即可

#include <iostream>
using namespace std;
#include "point.h"
#include "yuan.h"//判断点和圆的关系函数
void panduan(yuan& c, point& p) //用地址传节省空间
{//两点之间距离的平方(圆心到点的距离的平方)double d1 = (c.getrenter().getx() - p.getx()) * (c.getrenter().getx() - p.getx()) +(c.getrenter().gety() - p.gety()) * (c.getrenter().gety() - p.gety());//半径的平方double d2 = c.getr() * c.getr();if (d1 == d2){cout << "点在圆上" << endl;}else if (d1 < d2){cout << "点在圆内" << endl;}else{cout << "点在圆外" << endl;}
}int main()
{//创建圆yuan c;c.setr(10);point center;center.setx(10);center.sety(0);c.setcenter(center);//创建点point p;p.setx(10);p.sety(0);panduan(c, p);system("pause");return 0;
}

同理可得其他类的拆分

c++ 类的头文件和源文件拆分相关推荐

  1. C++类模板怎么写在单独的头文件和源文件中

    今天打算研究研究之前我们领导写的一段关于类模板的代码,后来发现有点坑需要记录一下.以往关于C++模板基本上都是写一个demo,然后运行通过,没有软件工程的样子,所以今天我按以往的惯例写了一个类模板,打 ...

  2. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  3. c 中头文件和源文件的区别是什么

    区别:头文件是".h"文件,提供接口:源文件是".cpp"文件,提供实现.编译器规定源文件必须包含函数入口,即main函数:而头文件不得包含函数入口,头文件不可 ...

  4. C++头文件和源文件,编译过程

    源文件如何根据#include来关联头文件  1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...

  5. C++头文件和源文件的编译过程

    源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...

  6. C语言头文件和源文件差异,#include两种引用方式差异

    一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的.只知道调用系统库函数时,要使用#include语句将某些头文件包含进去.其实,头文件跟.c文件一样,是可以自己写的.头文件是一种文本文 ...

  7. 什么是c 语言中源文件,C++中头文件和源文件详细介绍

    C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称 ...

  8. C语言中头文件和源文件的注意事项

    C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...

  9. C++中的头文件和源文件:如何写头文件

    C++中的头文件和源文件 转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一.C++编译模式 通常,在一个C++ ...

  10. c++中头文件和源文件的区别

    区别: 一般来说头文件提供接口,源文件提供实现 编译器规定源文件必须包含函数入口,即main函数.而头文件不得包含函数入口,头文件不可以单独编译成一个程序,仅仅包含程序片段或者定义常,变量. 头文件专 ...

最新文章

  1. 基于React与Redux的留言墙的实现
  2. 方舟服务器如何修改恐龙,方块方舟人物及驯养恐龙属性修改教程 人物属性怎么修改_游侠网...
  3. 302 found是什么意思_犯罪大师心中的恶魔答案是什么 心中的恶魔答案真相分析...
  4. Spring MVC 流程图解析
  5. Hadoop分布式文件系统HDFS的工作原理详述
  6. CCIE基础知识之EIGRP 二
  7. 荣耀双十一开门红:斩获多品类销量及销售额冠军
  8. 拼接播放地址_西安户外did拼接屏批发业务广泛_金伟达电子
  9. 中小企业信息网络安全解决方案
  10. python调用图灵机器人实现微信公众号的自动回复功能(下)
  11. 添加w3c验证图片到网站
  12. java 滚动歌词_基于JavaScript怎么实现让歌词滚动播放
  13. java 银联支付_java服务器端移动银联支付的流程
  14. 串行通信 - Modbus协议
  15. 电脑ping手机该怎么玩(很多网友都说电脑ping不通手机)?
  16. db4o官方停止支持及面向对象数据库的一些感想
  17. listen函数详解
  18. c# php 时间戳,C#实现时间戳的简单方法
  19. 单词拼写校正原理及实现(贝叶斯推断)
  20. python中item是什么意思中文-Python中items()系列函数的用法详解

热门文章

  1. linux6查看光纤网卡wwn,CentOS6u9 查看光纤卡HBA的WWN信息以及systool命令简录
  2. 云办公、云上课之后,智能家居也在这场“超长待机”中找到了新入口
  3. vyos-配置脚本的目录
  4. 微信小程序的组件的生命周期
  5. c语言运行太短怎么毡筒,C语言编程中的常见问题-最新文档.doc
  6. 一个关于椭圆曲线密码学的初级读本
  7. maven父子工程搭建
  8. [js]点击更换背景颜色/图片
  9. light动名词_动名词专项训练·附详解
  10. 往事如烟 - 夫妻股篇