我有几个对象,有时我必须一个接一个地访问它们。现在,我创建了一个“虚拟”对象,该对象带有指向所有对象的指针数组。 如果现在使用此对象调用函数,则将对其数组内的每个指针进行另一个调用。 我能够以此方式更改其他对象的值。但是,仅从对象中获取值是不可能的,我总是从虚拟对象中获取值。 简单的例子:
// arrayVerify.ino
#include "ledFunction.h"
ledFunction T1(1); // create first object
ledFunction T2(2); // create second object
ledFunction objectPointers[] = { &T1, &T2 }; // create array with pointers to objects
ledFunction Multi(objectPointers); // create a virtual object to access all
void setup()
{
Serial.begin(115200);
Multi.example();
}
void loop(){}
// ledFunction.h
#ifndef _LEDFUNCTION_h
#define _LEDFUNCTION_h
#include "arduino.h"
class ledFunction
{
private:
ledFunction *multiStripe; // the array used after creating the virtual object
byte identifier;
public:
ledFunction(int ident); // create single object
ledFunction(ledFunction *objectPointers); // create virtual object
void printIdentifier();
void example();
};
#endif
// ledFunction.cpp
#include "ledFunction.h"
ledFunction::ledFunction(int ident)
{
identifier = ident;
}
ledFunction::ledFunction(ledFunction *objectPointers)
{
multiStripe = objectPointers;
identifier = 9;
}
void ledFunction::example()
{
multiStripe[0].printIdentifier();
multiStripe[1].printIdentifier();
}
void ledFunction::printIdentifier()
{
Serial.print("Identifier is: ");
Serial.println(identifier);
}
这里的输出应该是 1个 2 它是 9 9
答案 0 :(得分:0)
替换:
ledFunction objectPointers[] = { &T1, &T2 };
作者:
ledFunction* objectPointers[] = { &T1, &T2 };
和相关声明:
ledFunction **multiStripe; // the array used after ...
ledFunction(ledFunction **objectPointers ); // create virtual object
multiStripe[0]->printIdentifier();
multiStripe[1]->printIdentifier();