У меня есть пара объектов, и иногда мне приходится получать доступ ко всем из них один за другим. Теперь я создал «виртуальный» объект с массивом указателей на все мои объекты.
Если я сейчас вызываю функцию с этим объектом, я делаю еще один вызов с каждым указателем внутри его массива.
Я смог изменить значения других объектов таким образом. Однако просто получить значение из объекта было невозможно, я всегда получал значение из виртуального объекта.
Простой пример:
// 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