C++/阿杜伊诺 : dynamic int array

标签 c++ arrays class integer arduino

我正在为 Arduino 编写类(class)。到目前为止一切顺利,但我现在有点卡住了...

我已经在我的类中声明了一个 int 数组

class myClass
{
  public: MyClass(int size);
  private:
    int _intArray[];
};

当我初始化类 MyClass myClass1(5) 时,我需要数组看起来像这样 {0,0,0,0,0}。

我的问题:我需要做什么才能使数组包含“大小”数量的零?

MyClass::MyClass(int size)
{
    //what goes here to dynamically initialize the array
    for(int i=0; i < size; i++) _intArray[i] = 0;
}

编辑:跟进下面的各种回复,Arduino 不包含标准库,所以很遗憾 std::vector 不是一个选项

最佳答案

我写这篇文章时你的代码:

class myClass
{
  public: MyClass(int size);
  private:
    int _intArray[];
};

_intArray 的声明不是有效的 C++:原始数组需要在编译时指定大小。

您可以改为使用 std::vector:

class myClass
{
public:
    MyClass( int size )
        : intArray_( size )    // Vector of given size with zero-valued elements.
    {}

private:
    std::vector<int> intArray_;
};

注意 1:一些编译器可能允许您的原始代码作为语言扩展,以支持“struct hack”(这是一种 C 技术,在 C++ 中不是必需的)。

注意 2:我已经更改了您的成员(member)的姓名。通常,名称开头的下划线可能会出现问题,因为它们可能与 C++ 实现中的名称冲突。

干杯,

关于C++/阿杜伊诺 : dynamic int array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358975/

相关文章:

c++ - 如何创建用户定义类型模板类对象 C++

c++ - 音量控制 channel 数 XP 与 Vista 不同

java - 在运行的生产环境中添加类文件

javascript - 将嵌套的对象数组转换为对象

java - 为什么CopyOnWriteArrayList中没有这样的removeRange()方法?

c# - 可以创建不区分大小写的字符串类吗?

Javascript访问父公共(public)变量

c++ - C++通用类,为什么需要.cpp文件?

c++ - 从字符串中的多个数字中删除前导零? [C++]

c++ - 将一个数组值指向同一数组的另一个值 - C++