我在使用指针数组时遇到问题,需要创建一个指针数组,引用另一个类中每个对象的整数值。
示例:
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中编写。这样做的正确方法是什么?
答案 0 :(得分:0)
您的类定义中的行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);
}
答案 1 :(得分:0)
总是需要在代码文件中定义静态成员变量。
在类定义之后在代码文件中插入Scenario::link
初始化:
int* Scenario::link[6] = {NULL};