[英]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.