Поэтому я работал над модификацией большого класса в C ++, и теперь у меня появилась задача сделать его абстрактным, чтобы можно было легко переключаться между старой версией и моим измененным классом. Обе версии должны остаться, но сейчас как-то так class c1 : public c
& class c2 : public c
,
Проблема в том, что это действительно большой класс с большим количеством функций, которые используют несколько структур. Это выглядит примерно так.
struct1{
int i1, i2;
}
struct2{
string s;
float f;
}
class c{
void f1(struct1 s, float d);
void f2(std::vector<int> &v1);
}
И модифицированный:
struct1{
float i1, i2;
};
struct2{
string s;
double f;
string s2;
};
class c{
void f1(struct1 s, float d);
void f2(std::vector<float> &v1);
}
Таким образом, изменяется не только реализация функции, но и структура этих структур и тип параметров в некоторых контейнерах. У меня вопрос какой (с точки зрения чистоты & хорошо написанный код) я мог сделать, чтобы сделать class c
Аннотация? Как я могу переопределить эти структуры, чтобы быть разными? Скрыть переменные из базовых структур переменными разных типов? Внутри f1 & f2 — прямые операции над членами struct1 & struct2, как
if(struct1.i1 < someInt) doSomething();
и в модифицированном классе
if(struct1.i1 <someFloat) doSomethingElse();
,
Другая проблема — это контейнеры с разными параметрами в качестве аргументов функций. Моя идея состоит в том, чтобы превратить эти контейнеры в структуры / классы, которые затем могут быть реализованы по-другому, или превратить эти параметры в структуры, например std::vector<struct3> &v
и затем struct3 также может быть реализована различными способами в зависимости от того, что необходимо.
Спасибо за все ответы!
Задача ещё не решена.
Других решений пока нет …