How to fix “invalid use of non-static member function” in a library

Hello I'm trying to write a library which I need for a project of mine. What I need is that after aI call a certain function, another function will be called some time later. In order to do this I wanted to use FlexiTimer2 which is pretty good, and I can use it in a normal arduino main, but I cannot implement it in the library I'm writing.

I'm posting a minimal (non) working example:

.h file

#ifndef StepperDriverController_h
#define StepperDriverController_h

#include <stdlib.h>
#if ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#include <wiring.h>
#endif

class StepperDriverController
{
    public:
        StepperDriverController(unsigned char step, unsigned char direction);

        void setPulseWidth(unsigned short width);
        // other methods

    protected:
        void stepPinDown();
        void step();

    private:
        unsigned char _pins[2];
        // other attributes
};
#endif

.cpp file

#include "StepperDriverController.h"

void StepperDriverController::stepPinDown()
{
    digitalWrite(_pins[0], LOW);
    FlexiTimer2::stop();
}

void StepperDriverController::setPulseWidth(unsigned short width)
{
    _pulseWidth = width;
    FlexiTimer2::set(width, 1.0/1000000.0, stepPinDown); //here the error
}

void StepperDriverController::step()
{
    digitalWrite(_pins[1], _direction ? HIGH : LOW);

    digitalWrite(_pins[0], HIGH);
    FlexiTimer2::start();
}

It says: “invalid use of non-static member function” which I am not able to fix.

The point is that FlexiTimer2 wants a free function as argument and I am passing a member function. But then if it is converted to a member function it will be no longer able to access member attributes.

Member functions have a different signature than regular functions. Here's a pretty good explanation: Standard C++

It seems to say that it is not possible, and I have to pass somehow the instance of an object:

As a patch for existing software, use a top-level (non-member) function as a wrapper which takes an object obtained through some other technique. Depending on the routine you’re calling, this “other technique” might be trivial or might require a little work on your part.

The problem is that I am working on a library, so the instance would be "this"

I'll try by using an external function and make you know

How many instances of the 'StepperDriverController' will you have? If only one, you can use a static member function of that class. It will have the same signature as a non-member function.

gfvalvo:
How many instances of the 'StepperDriverController' will you have? If only one, you can use a static member function of that class. It will have the same signature as a non-member function.

And, if there will be more than one, which one is supposed to care that the timer went off?