I've to build a timespan class with a rather complex setting process. There will be several constructors. Is it a bad idea to call a setter in the constructors?

I know I shouldn't call non-private setters directly to avoid problems if the setter gets overwritten in a derived class. I thought of either creating the real setter private and wrap a public setter around and call the private setter in the constructor to avoid having to declare it final.

```
class A {
    public:
         A(sometype data1, sometype data2);

         void setData1(sometype data1);
         void setData2(sometype data2);

    private:
         void p_setData1(sometype data1);
         void p_setData2(sometype data2);
};

A::A(sometype data1, sometype data2) {
    p_setData1(data1);
    p_setData2(data2);
}

void A::setData1(sometype data1) { p_setData1(data1); }
void A::setData2(sometype data2) { p_setData2(data2); }

void A::p_setData1(sometype data1) {
     //Complex validation and calculations
}

void A::p_setData2(sometype data2) {
     //Complex validation and calculations
}

```

Does anyone have best practices?