Здравствуйте.
Есть вот такие классы
class A()
{
public:
int arr[1000];
int foo;
void calc();
void calc_2();
void calc_3();
}
class B()
{
public:
int arr[1000];
char bar;
void calc();
void calc_2();
void calc_4();
}
Хочу объединить эти классы. Начитавшись статей в Интернете вижу вот такое решение:
class ISomeGeneralClass()
{
public:
virtual void calc();
virtual void calc_2();
}
class A(): public ISomeGeneralClass
{
public:
int arr[1000];
int foo;
virtual void calc() { /* Описание поведения А */ };
}
class B(): public ISomeGeneralClass
{
public:
int arr[1000];
char bar;
virtual void calc() { /* Описание поведения B */ };
}
Но меня смущает, что у обоих классов есть одинаковые поля данных int arr[1000]. Не нужно ли это поле вынести в отдельный класс от который будут использовать A и B? Вот что-то такое:
class ISomeGeneralClass()
{
public:
virtual void calc();
virtual void calc_2();
}
class Data
{
public:
int arr[1000];
}
class A(): public ISomeGeneralClass
{
public:
Data data;
int foo;
virtual void calc() { /* Описание поведения А */ };
}
class B(): public ISomeGeneralClass
{
public:
Data data;
char bar;
virtual void calc() { /* Описание поведения B */ };
}
Помогите, пожалуйста, решить этот вопрос.