我正在为 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/