繁体   English   中英

数组的C ++ / Arduino实现

[英]C++/Arduino Implementation of array

我在使用指针数组时遇到问题,需要创建一个指针数组,该指针数组引用另一个类中每个对象的整数值。

例:

arrayOfPointers[0] = object.int;

如果此数组在类中以及如何仅作为引用,它将是静态的,因此我可以使用此数组引用另一个类的每个对象的值,该值将在以后的eeprom中记录,我在eeprom中读取了值,可以使用指针为对象变量传递eeprom的值。

我当前的代码是:

class Scenario {

public:
int byte; // byte of the eeprom
static int* link[6]; // array of pointers



Scenario(int byteI) // constructor of the class
{ 

byte = byteI;
link[0] = &led1.fade;
}

在这种情况下,我得到错误:未定义对`Scenario :: link'的引用。 我试过使用

Scenario::Scenario link [0] = &led1.fade;

但是在尝试以任何方式使用它(在串行打印或试图以eeprom写入)时出现错误。 正确的方法是什么?

您的行static int* link[6]; // array of pointers static int* link[6]; // array of pointers类定义内static int* link[6]; // array of pointers只是一个声明,因为它是静态的。 您需要在源文件(而不是标头)的类之外添加定义int* Scenario::link[6];

像这样:

struct led
{
    int fade;
};

led led1;

// put this in a header file Scenario.h
class Scenario
{

public:
    int byte; // byte of the eeprom
    static int* link[6]; // array of pointers (DECLARATION)

    Scenario(int byteI) // constructor of the class
    {

        byte = byteI;
        link[0] = &led1.fade;
    }
};

// put this in a source file Scenario.cpp
int* Scenario::link[6]; // (DEFINITION)

// make sure you link Scenario.o along with your main object file
int main()
{
    Scenario s(4);
}

静态成员变量始终需要在代码文件中定义。

在类定义后的代码文件中插入Scenario::link初始化:

int* Scenario::link[6] = {NULL};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM