Edit: If you want to use the function dimAll() as an interrupt handler function, then it cannot be a (non-static) member of a class. All class functions have a hidden this pointer as the first parameter in the argument list, since it has to know which DimmerImplementor's members to modify. Thus you have to declare the function as static. And as soon as you do that, you cannot call dimAllDimmers(), because that functions accesses an instance of DimmerImplementor's variables. Luckily, you have a global object called implementor, so you could use that:
static void DimmerImplementor::dimAll() {
implementor.dimAllDimmers();
}
But it's usual to make that variable a static member of the class itself:
class DimmerImplementor {
.
.
public: // Static variables
static DimmerImplementor implementor;
.
.
}; // DimmerImplementor
You'd initialise that as follows:
DimmerImplementor DimmerImplementor::implementor(dimmers, _DIMMER_pinOpto);