[英]C++ call function from inside a function with pointer array
我有几个对象,有时我必须一个接一个地访问它们。 现在,我创建了一个“虚拟”对象,该对象带有指向所有对象的指针数组。 如果现在使用此对象调用函数,则将对其数组内的每个指针进行另一个调用。 我能够以此方式更改其他对象的值。 但是,仅从对象中获取值是不可能的,我总是从虚拟对象中获取值。 简单的例子:
// 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
更换:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.