C ++制作使用结构的抽象类

时间:2017-08-23 07:13:42

标签: c++ class inheritance struct abstract

所以我正在修改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。 谢谢你的回答!

0 个答案:

没有答案