我有一个类声明,我将多次使用不同的标题和值值
class Generator
{
public:
String Titles[9];
int16_t Values[9];
byte MainSel;
void SetTitles(String names[9])
{
for (i = 0; i < 9; i++)
Titles[i] = names[i];
}
void Update_Display()
{
Display(__func__, Titles, Values, MainSel);
}
};
我声明它的一个实例并尝试使用 SetTitles 设置标题
Generator Organ_Levels;
Organ_Levels.SetTitles("", "Rot", "Tone", "Sprd", "Bal", "Upper", "Lower", "Pedal", "Volume");
但编译器似乎认为我传递的是字符数组:
No matching function for call to 'Generator::SetTitles(const char [1], const char [4], const char [5], const char [5], const char [4], const char [6], const char [6], const char [6], const char [7])'
为什么不将它们作为 Arduino String
类型的实例?
最佳答案
尚不清楚String
是什么,但我假设它类似于std::string
。
将数组作为参数传递是一个糟糕的主意。改为使用 vector :
void SetTitles(vector<string> names)
然后你可以很容易地调用它在流上创建一个 vector ,只需要两个大括号:
Organ_Levels.SetTitles({"", "Rot", "Tone", "Sprd", "Bal", "Upper", "Lower", "Pedal", "Volume"}); return 0;
更进一步就是在您的类(class)中安装数组。然后,您可以替换 for 循环以将值一个一个地复制到 vector 级别的简单赋值语句。
关于c++ - 在类中设置 Arduino 字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196319/