Хотелось бы узнать мнение об такой структуре кода:
class A
{
int x;
int y;
public:
virtual void funcRun( void );
protected:
void Run ( void )
{
x = x+y;
};
};
class B : A
{
public:
B()
{
x = 1;
y = 2;
};
void funcRun ( void )
{
Run();
};
};
class C : A
{
public:
C()
{
x = 3;
y = 4;
};
void funcRun ( void )
{
Run();
};
};
void testFunc(A *a)
{
a->funcRun();
}
int main()
{
B b;
C c;
testFunc(b);
testFunc(c);
return 0;
}
Можно ли назвать ее адекватной с точки зрения рефакторинга и какие проблемы подобная структура может повлечь?