所以我正在修改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&amp; f2是对struct1&amp;成员的直接操作。 struct2,就像
if(struct1.i1 < someInt) doSomething();
和修改后的类
if(struct1.i1 <someFloat) doSomethingElse();
。
另一个问题是那些具有不同参数的容器作为函数的参数。我的想法是将这些容器变成结构/类,然后可以以不同的方式实现,或者将这些参数组成结构体,如std::vector<struct3> &v
,然后根据需要以不同的方式实现struct3。
谢谢你的回答!