c++ - 在类中设置 Arduino 字符串值

标签 c++ arrays string parameter-passing

我有一个类声明,我将多次使用不同的标题和值值

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;

Online demo

更进一步就是在您的类(class)中安装数组。然后,您可以替换 for 循环以将值一个一个地复制到 vector 级别的简单赋值语句。

关于c++ - 在类中设置 Arduino 字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196319/

相关文章:

C++ Atoi 函数给出错误

c++ - 为什么在这段C++代码中不能实例化模板?

java - 如何访问 2D 按钮阵列中的一个按钮? Java Swing

string - 是否可以在 JavaScript 中记录变量名称?

Java:强制字符串具有一定的长度和间隔

c++ - CFile写函数

java - 将结果集从 SQL 数组转换为字符串数组

javascript - JavaScript 函数中的 .split 存在问题,该函数获取字符串中每个单词的最大重复字符数

c++ - 类中的字符串//C++

c++ - SDL 窗口在移动时消失?