2790|9

2625

帖子

6

TA的资源

五彩晶圆(初级)

楼主
 

C++(2)class 类 [复制链接]

学C++就是为了写arduino的库,其中比较主要用到的是类的编写。

先找到arduino编写库的参考,在arudino 官网给出了morse电码的一个例子,咱们没有io直接用cout代替。

Morse电码例子程序的地址如下:

https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide

在Clion中可以直接新建class如图1所示

图1:clion新建c++类

图2:新建C++类添加到first_demo

//
// Created by xutong on 2022/12/13.
//

#ifndef FIRST_DEMO_MORSE_H
#define FIRST_DEMO_MORSE_H
#include "iostream"

class morse {
//public 代表公共可见
public:
static void dot();
static void dash();
//private 私有变量不可见
private:
static void initMorse();

};


#endif //FIRST_DEMO_MORSE_H

 

Morse.h 文件

//
// Created by 许同 on 2022/12/13.
//

#include "morse.h"
#include "iostream"
void morse::dot()
{
std::cout<<"high \r\n";
std::cout<<"delay 250ms \r\n";
std::cout<<"low \r\n";
std::cout<<"delay 250ms \r\n";
}
void morse::dash()
{
std::cout<<"high \r\n";
std::cout<<"delay 1000ms \r\n";
std::cout<<"low \r\n";
std::cout<<"delay 250ms \r\n";
}
// private 私有变量
void morse::initMorse()
{
std::cout<<"Init \r\n";
}

 

Morse.c文件

图3:运行结果

在主程序中,调用私有变量会报错,如下所示

图4:建议将Morse变量改为public变量

#include <iostream>
#include "morse.h"
int main() {
//创建一个名为mos的morse对象
morse mos;
//调用对象
mos.dash();
mos.dot();
return 0;
}

 

或者创建对象,直接调用对象函数就行。但仅仅是这个看不出来类的便利性,咱们继续给他传入参数。这样不同对象打印值细微差别。

//
// Created by 许同 on 2022/12/13.
//

#ifndef FIRST_DEMO_MORSE_H
#define FIRST_DEMO_MORSE_H
#include "iostream"

class morse {
//public 代表公共可见
public:
void dot();
void dash();
void initMorse(char name);
//private 私有变量不可见
private:
char Names;


};


#endif //FIRST_DEMO_MORSE_H

 

 

新建私有变量Names,Names是对其它东西不可见的,相当于Class的全局变量,在dot()和Dash中可以直接调用。

//
// Created by 许同 on 2022/12/13.
//

#include "morse.h"
#include "iostream"
void morse::dot()
{
std::cout<<"high ";
printf("%c\r\n",Names);
std::cout<<"delay 250ms \r\n";
std::cout<<"low \r\n";
std::cout<<"delay 250ms \r\n";
}
void morse::dash()
{
std::cout<<"high ";
printf("%c\r\n",Names);
std::cout<<"delay 1000ms \r\n";
std::cout<<"low \r\n";
std::cout<<"delay 250ms \r\n";
}
void morse::initMorse(char name)
{
printf("%c\r\n",name);
Names=name;
std::cout<<"Init OK \r\n";
}

 

以上代码在Dash和Dot中调用Names,就可以直接使用了。

图5:传入不同变量的运行结果

#include <iostream>
#include "morse.h"
int main() {
//创建一个名为mos的morse对象
morse mos;
//给mos传入字符A
mos.initMorse('a');
//调用对象
mos.dash();
mos.dot();
//创建一个名为mosb的morse对象
morse mosb;
//给mosb传入字符B
mosb.initMorse('b');
//调用对象
mosb.dash();
mosb.dot();
return 0;
}

 

主程序

 

参考文档

C++prime plus 第6版

 

Arduino :Writing a Library for Arduino

 

 

最新回复

补全、提示、重构这些很好用,现在已经离不开了。   详情 回复 发表于 2022-12-16 16:52
点赞 关注
个人签名

希望做一些大家觉得好用的东西!

 

回复
举报

6841

帖子

11

TA的资源

版主

沙发
 
多谢分享呀,希望一直写下去,学好C++,我也好跟着学习。谢谢!

点评

感谢鼓励!  详情 回复 发表于 2022-12-15 10:01
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

板凳
 
lugl4313820 发表于 2022-12-15 07:15 多谢分享呀,希望一直写下去,学好C++,我也好跟着学习。谢谢!

感谢鼓励!


 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

4
 

arduino 如何写库参考

我不懂的单词在旁边添加了注释,这个方法学英语很好

Writing a Library for Arduino Arduino Documentation Arduino Documentation.pdf (1.6 MB, 下载次数: 1)

点评

我给你点赞,加油,希望每天看到你更新一帖。一年后,就有不一样的您!  详情 回复 发表于 2022-12-15 12:42
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

6841

帖子

11

TA的资源

版主

5
 
xutong 发表于 2022-12-15 11:10 arduino 如何写库参考 我不懂的单词在旁边添加了注释,这个方法学英语很好

我给你点赞,加油,希望每天看到你更新一帖。一年后,就有不一样的您!

点评

我方向还是挺杂的,不过基本每周都有些东西  详情 回复 发表于 2022-12-15 12:44
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

6
 
lugl4313820 发表于 2022-12-15 12:42 我给你点赞,加油,希望每天看到你更新一帖。一年后,就有不一样的您!

我方向还是挺杂的,不过基本每周都有些东西

 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

7462

帖子

18

TA的资源

五彩晶圆(高级)

7
 

clion可以,好东西!

点评

跨平台  详情 回复 发表于 2022-12-16 07:38
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

8
 
freebsder 发表于 2022-12-15 19:02 clion可以,好东西!

跨平台


点评

补全、提示、重构这些很好用,现在已经离不开了。  详情 回复 发表于 2022-12-16 16:52
 
 
 

回复

7462

帖子

18

TA的资源

五彩晶圆(高级)

9
 

补全、提示、重构这些很好用,现在已经离不开了。

点评

嘿嘿,随时离开  详情 回复 发表于 2022-12-17 09:32
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

10
 
freebsder 发表于 2022-12-16 16:52 补全、提示、重构这些很好用,现在已经离不开了。

嘿嘿,随时离开

 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表