我有一个无法更改的API接口。 该接口包含两个结构。由于它们非常相似,因此我想将两个结构的实例存储在同一集合中。
据我了解,我需要为这些结构创建一个超类,以便可以将这两个结构的实例添加到集合中。但是有可能在不更改界面本身的情况下这样做吗?
答案 0 :(得分:1)
您无法在c ++中创建类的超类,但可以使用std::variant将两个结构都添加到集合中。
或者,如果每个结构中都有某些变量/方法要以相同的方式访问,则可以创建一个新的类来封装两个结构:
// structs from the API
struct A {
int some_int;
string some_string;
};
struct B {
int some_int;
string some_string;
}
// new struct that you write
struct ABInterface {
int some_int;
string some_string;
// "copy" constructor from A object
ABInterface(A a) {
some_int = a.some_int;
some_string = a.some_string;
}
// "copy" constructor from B object
ABInterface(B b) {
some_int = b.some_int;
some_string = b.some_string;
}
}