作为个人Arduino项目的一部分,我添加了一个初始"输入"阶段,要求用户输入一个整数,表示其旋转木马中的样品瓶数量(该特定信息与问题无关,我只是想我最好提及它。)此输入通过LCD按钮键盘接收。
此整数将仅用于名为Vial_Control的自定义类。
目前,如果我使用16小瓶系统,我会硬编码" 16"并使用' #define'整个指令(' const int'也可以,但不能解决问题。)
问题是,当我要求用户输入时,我已经在主文件中创建了我的全局变量,表示Vial_Control的类构造函数对象。
#ifndef Vial_Control_h
#define Vial_Control_h
#include "Arduino.h"
class Vial_Control
{
public:
Vial_Control(); // constructor
void setSystemVialCount(int vialCount);
// bunch of other unrelated functions
private:
#define VIAL_COUNT 16 // I used to use this
static const int VIAL_COUNT; // now I use this
// bunch of other...
};
#endif
现在在我的实施文件中
Vial_Control::Vial_Control()
{
// I used to assign 'static const int VIAL_COUNT' here
// but turned away from that.
// bunch of other...
}
void Vial_Control::setSystemVialCount(int vialCount)
{
/* I started to do this, even prior to defining the variable
* as 'static'. I added 'static' as per suggestion from the
* compiler, although I'm not entirely convinced that this is
* the best solution. */
VIAL_COUNT = vialCount;
}
因此,在我的ArdProj.c文件中,创建了Vial_Control构造函数,然后在初始阶段(Arduino调用此setup()
)我请求用户输入,然后调用函数setSystemVialCount(int vialCount)
,传入输入。
这是我之后的最佳解决方案吗? static const int VIAL_COUNT
是否会保持价值" 16"对于整个运行时间?
当我没有添加static
时,我收到了错误,因为我没有在构建时初始化变量。
如果有什么不清楚,请告诉我,我会添加更多。
谢谢, 安东尼
答案 0 :(得分:0)
这是一个有趣的问题。
是否有任何方法可以从硬件(样品瓶转盘)获取信息,设备可以通过该硬件告诉您它是否为16个样品瓶系统?如果是这样,那么你可以在你的ctor中使用它,并且可以在那里设置VIAL_COUNT。例如:
Vial_Control::Vial_Control(int nVials=16): vialCount(nVials)
{
}
以这种方式,const成员可以在创建时使用其初始值进行初始化。据我了解您正在做什么,用户输入为您提供正在使用的样品瓶数量,成员const int vialCount是机器上可用的最大样品瓶数。 (?)