C ++为API

时间:2018-07-10 16:02:09

标签: c++ api struct interface superclass

我有一个无法更改的API接口。 该接口包含两个结构。由于它们非常相似,因此我想将两个结构的实例存储在同一集合中。

据我了解,我需要为这些结构创建一个超类,以便可以将这两个结构的实例添加到集合中。但是有可能在不更改界面本身的情况下这样做吗?

1 个答案:

答案 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;
    }
}