Я бы сделал это так:
struct A {}
struct B {}
struct OldImpl : public A {}
struct NewImpl : public B {}
struct Combined : public AImpl, public BImpl {}
Затем вы можете передать объединение во все, что хочет A или B. Проблема в том, что ваши OldImpl и NewImpl полностью разделены.Им не разрешают взаимодействовать друг с другом;Это означает, что вы не можете вызвать setFoo()
в A и получить то же значение в getFoo()
в B. Что, вероятно, не то, что вы хотите из того, что вы описали.
Чтобы решить эту проблему, не создавайте2-й интерфейс.В любом случае это не сработает, потому что там, где xxx()
может быть недействительным сейчас, а int позже, вы, вероятно, захотите что-то сделать с возвращаемым значением.Если вы действительно хотите сделать это в пошаговом режиме, создайте ветвь, измените возвращаемое значение одной функции, протестируйте его, объедините, повторите.