Fast LED Lambda color variable

Hello
I have a general problem with fast led. Anytime, I want to transfer a CRGB variable into a lambda function, my strip is going crazy.

The lambda function:

theaterChase.onAction([](int numLeds, uint8_t gHue, int stripId, int brightness, CRGB color, LedEffect* effect) {
        CRGB strip[numLeds];

        for(int i = gHue; i + 3 < numLeds; i ++){
          strip[i] = CRGB(0,0,0);
        }

        for(int i = gHue; i + 3 < numLeds; i +=3){
          strip[i] = color;
        }
        FastLED[stripId].showLeds(brightness);
      });

And the LedEffect class (with the lambda function in it)

class LedEffect {
  public:
    typedef void (*voidFnPtr)(int numLeds, uint8_t gHue, int stripId, int brightnes, CRGB color, LedEffect* effect);
    voidFnPtr  CallBackFnPtr;
    int numLeds = 0;
    uint8_t gHue = 0; // rotating number
    bool isActive = false;
    int stripId = 0;
    int brightness = 155;
    int effectSpeed = 500;
    CRGB color = CRGB(0, 0, 255);

    void action() {
      CallBackFnPtr(numLeds, gHue, stripId, brightness, color, this);
    }

    void onAction(voidFnPtr fnPtr) {
      CallBackFnPtr = fnPtr;
    }

    void setNumLeds(int num) {
      this->numLeds = num;
    }

    uint8_t getGhue() {
      return gHue;
    }

    void setActive(bool state) {
      isActive = state;
    }

    bool getIsActive() {
      return isActive;
    }

    void setBright(int i) {
      brightness = i;
    }

    void setEffectSpeed(int i) {
      effectSpeed = i;
    }

    void setStripId(int i) {
      stripId = i;
    }

    void setColor(const struct CRGB& c) {
      color = c;
    }

    void resetHue(){
      gHue = 0;
    }

    void setHue(uint8_t i){
      gHue = i;
    }

    long lastRefreshTime = 0;

    void update() {
      if (millis() - lastRefreshTime >= effectSpeed) {
        gHue++;
        if (isActive)
          action();
        lastRefreshTime += effectSpeed;
      }
    }
};

I have no idea whats going wrong here ;_;

"strip" variable is assigned but never used.
Out of your 6 arguments, only 2 are used:

FastLED[stripId].showLeds(brightness);

which are stripId and brightness

theaterChase.onAction([](int numLeds, ...) {
        CRGB strip[numLeds];

Are you making the classic mistake of trying to use the local variable (strip) after the function where it was defined has returned?