具有指针数组的函数内部的C ++调用函数

时间:2018-11-04 12:24:17

标签: c++ arrays pointers

我有几个对象,有时我必须一个接一个地访问它们。现在,我创建了一个“虚拟”对象,该对象带有指向所有对象的指针数组。 如果现在使用此对象调用函数,则将对其数组内的每个指针进行另一个调用。 我能够以此方式更改其他对象的值。但是,仅从对象中获取值是不可能的,我总是从虚拟对象中获取值。 简单的例子:

// 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

1 个答案:

答案 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();