I see code like below and don’t like it. Especially memset(static_cast(this), 0, sizeof(BaseStruct)); I need arguments for refactoring and found one here: Why can it be dangerous to use this POD struct as a base class?
Do you see more problems? Is vtable in danger?
// abstract class
class BaseA {
public:
virtual void doSomethingA() = 0;
};
// no method, no virtual method, only simple data
typedef struct BaseStruct {
int x;
float y;
long z[10];
} BaseStruct;
class Subclass : public BaseA, public BaseStruct {
public:
virtual void doSomethingA() {}
virtual void doSomethingElse() {}
void resetBaseA() {
memset(static_cast<BaseStruct*>(this), 0, sizeof(BaseStruct));
}
};