使用类指针拆分项目

劳伦斯·韦恩

我最近开始学习STM32F103微控制器的C ++,并且正在使用一个名为STM32plus的库。问题是,我根本不习惯C ++和指针,而该库实际上依赖于它们。

因此,目前,我的所有代码都位于1个源文件中,我想开始将其拆分为多个部分。在我的主源文件的顶部,我有这样的声明:

#include "config/stm32plus.h"
#include "config/display/tft.h"

using namespace stm32plus;
using namespace stm32plus::display;

typedef Fsmc16BitAccessMode<FsmcBank1NorSram1> LcdAccessMode;
typedef SSD1289_Landscape_64K<LcdAccessMode> LcdPanel;

LcdAccessMode *_accessMode;
LcdPanel *dsp;
Font *font;

还有更多,但看起来像这样(此部分用于显示,还有更多用于SD卡和其他组件的信息)。我大部分都知道这里发生了什么。我在此文件中的功能之一如下所示:

template <class T>
void print(T text)
{
    textx+=dsp->measureString(text);
    *dsp<<Point(textx,texty)<<text;
}
void println()
{
    textx=0;
    texty+=font->getHeight()+1;
}
template <class T>
void println(T text)
{
    print(text);
    println();
}

现在,我想尝试将其移动到一个单独的文件或类(Print.cpp和Print.h)中,但是在尝试了各种不同的事情(例如extern类)之后,包括整个库,正向声明以及在10个以上的谷歌搜索之后我尝试编译该代码时遇到了各种错误,并且搜索了我要尝试执行的操作,但我根本找不到任何解决方案。我会举一些我尝试过的例子,但是我删除了之前的所有尝试,但是它们还是没有用。

因此,有人可以给我一个类或方法的示例,以将这些函数放在单独的文件/类中,以便我可以在主程序中使用它,同时仍然允许主程序使用显示函数吗?

任何帮助/建议,不胜感激。请注意,我还是C ++的新手,并且这是一个嵌入式系统,因此RAM受限制(我无法创建显示对象/类的另一个实例)

史提芬

关于模板功能:
在文件中使用模板特化时,模板功能的定义必须可见。为此,您有两种可能性:

  1. 您可以在头文件中编写模板函数的定义,并将此头文件包含在将使用这些函数的所有.cpp文件中。

  2. 您为要使用的每种类型编写模板函数的前向声明,这称为模板函数专用化前向声明(有关确切语法,请参见此线程)。

关于文件作用域指针:
如果要使用打印功能print.cpp并使用该dsp指针,则需要使该指针可见。你可以:

1)向print()类型添加第二个参数LCDPanel *(好的解决方案)。这样,每个阅读函数声明的人都知道该函数print()使用a,LCDPanel而不必阅读函数定义来查找要使用的全局变量。

2)使LCDPanel指针成为全局指针,因此在print.cpp(错误的解决方案)中可见

/* main.cpp */
LcdPanel *dsp; 

/* main.h */
#include "config/stm32plus.h"
#include "config/display/tft.h"

using namespace stm32plus;
using namespace stm32plus::display;

typedef Fsmc16BitAccessMode<FsmcBank1NorSram1> LcdAccessMode;
typedef SSD1289_Landscape_64K<LcdAccessMode> LcdPanel;
extern LCDPanel *dsp;

/* print.cpp */
#include "main.h"

(顺便说一下,dsp指定显示器不是一个好名字,因为dsp它被用于嵌入式世界中的数字信号处理)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在类中使用指针数组

来自分类Dev

在类中使用指针数组

来自分类Dev

使用指针的类实例化

来自分类Dev

使用字符指针将句子拆分为单词

来自分类Dev

使用基类作为指针的安全容器

来自分类Dev

如何使用cppyy从指针索引类的数组

来自分类Dev

使用const指针指向函数中的类

来自分类Dev

使用基类指针到达继承的变量

来自分类Dev

在 Swift 类中使用指向对象的指针

来自分类Dev

如何在C ++中使用多个定界符拆分char指针并返回char指针数组?

来自分类Dev

在类定义C ++之前使用类成员函数指针

来自分类Dev

如何从类的实例上的指针使用类的方法?

来自分类Dev

测试项目中可选使用的类的使用

来自分类Dev

使用拆分字符串中的值填充类变量

来自分类Dev

使用jQuery通过li类名称拆分ul列表

来自分类Dev

如何使用自己的对象和枚举对类进行拆分

来自分类Dev

使用XCode项目生成类图

来自分类Dev

使用类方法从列表中删除项目

来自分类Dev

使用XCode项目生成类图

来自分类Dev

在Silverlight项目之间使用类

来自分类Dev

python 使用类添加连接删除项目

来自分类Dev

拆分重复项目?

来自分类Dev

在jQuery中拆分项目

来自分类Dev

在管道上拆分项目

来自分类Dev

指向使用Rcpp对象创建的C ++类的指针

来自分类Dev

使用指针成员变量在类中重载+运算符

来自分类Dev

使用std :: vector的类指针进行C ++迭代

来自分类Dev

使用构造函数初始化类中的指针

来自分类Dev

使用boost :: function通过函数指针调用C ++类方法