因此,在javascript(coffeescript)中,我有如下代码:
"BRIGHT":
min: 1
max: 4
step: 1
value: 3
bluetooth:
options: [ 'off', 'on' ] # SOMETIMES I NEED ARRAY
callback: ->
rangeFinder.bluetooth = rangeFinder.getSetting().value
mode:
options: [ 'basic', 'advanced', 'config' ] # OF DIFFERENT LENGTHS
callback: ->
rangeFinder.lastMode = rangeFinder.getSetting().value我如何在c++中做这样的事情?
我有一个与亮度相似的3个物体阵列
#include "setting.cpp"
class GlobalMenu {
public:
MenuSetting settings[3];
int setting;
GlobalMenu();
};
GlobalMenu::GlobalMenu(void){
// What is the currently selected setting?
this -> setting = 0;
this -> settings[0].name = "BRIGHT";
this -> settings[0].min = 1;
this -> settings[0].max = 4;
this -> settings[0].step = 1;
this -> settings[0].value = 3;
this -> settings[1].name = "BLUETOOTH";
// HOW DO I GET VARIABLE LENGTH ARRAYS HERE?
}在setting.cpp
class MenuSetting {
public:
char *name;
int min;
char options[][5];
int max;
int step;
int value;
};在其他地方,这段代码会更改设置(并且工作)
void RangeFinder::changeSetting(int dir) {
this -> data.global.settings[this -> data.global.setting].value +=
(dir ? 1 : -1) *
this -> data.global.settings[this -> data.global.setting].step;
this -> enforceMinMax();
this -> render();
}另外,如果你能找到一种方法来清理它,那会有帮助的。
因此,我可能会知道如何检测选项是否有长度,但在将任意数量的选项分配到options数组中时,我遇到了问题。
解决方案不能使用STD.
据我所知,atmega32微控制器不能使用std .
发布于 2014-02-13 21:36:40
在C++中,处理可变大小数组的规范方法是使用vector
std::vector<std::string> options;
options.push_back("First option");
options.push_back("Second option");
options.push_back("Third option");然后您可以使用options.size()来知道有多少个元素。
在开始使用这门语言之前,你也可以通过从一个封面读到另一个封面来帮助你自己。由于几个原因,C++不是通过实验学习的合适语言,最重要的是:
发布于 2014-02-13 21:36:36
避免陷入几个陷阱的最佳选择是:
这将使您的课堂看起来像:
class MenuSetting
{
public:
std::string name;
int min;
std::vector<std::string> options;
int max;
int step;
int value;
};您可以找到关于std::string和std::vector的各种操作的详细信息。
发布于 2014-02-14 17:49:12
不可能..。答案是创建case语句和更多的硬代码。
https://stackoverflow.com/questions/21765895
复制相似问题