Inheritance – C ++ Robust UI transition system

I am writing an animation system for GUI elements of my own user interface layout system. I'm struggling to find an easy way to expand the base animation class. Here it is:

class Animation {

private:

    // Thread to run the animation on
    std::thread anim;

    // Total time for the animation to run
    double time{};

protected:

    // Node that the animation affects
    Node* node = nullptr;

public:

    Animation(double time, Node* node)
        : time(time), node(node) { }

    void start() {
        anim = std::thread((&) () {
            Stopwatch sw(time);
            float progress;
            while ((progress = sw.getProgress()) < 1) {
                step(progress);
            }
        });
        anim.detach();
    }

private:

    // Override this. Progress is a float between 0 and 1.
    // Change the node member of the class accordingly.
    // This is called internally.
    virtual void step(float progress) = 0;

};

I think this course is ok. Here is an example of a child class:

class EaseRight : public Animation {

private:

    double startX{};
    double endX{};

public:

    EaseRight(double time, Node* node, double startX, double endX)
        : Animation(time, node), startX(startX), endX(endX) { }

private:

    virtual void step(float progress) {
        node->setHorizontalOffset(quadInterp(progress, 1, startX, endX));
    }

};

This is a lot of boilerplate for essentially a line function code. In Java, similar things can be achieved with lambdas or anonymous classes. Is there a better way to create child classes, and are there any general tips for my codestyle or animation system?