uint — Поддержание ABI — Передача параметров интерфейса

Я занимаюсь разработкой библиотеки в DLL. Чтобы поддерживать ABI, я использовал подход, который использует интерфейс, который экспортируется в мой клиент, и реализует этот интерфейс в моей библиотеке. Чтобы моя библиотека работала, мне нужно большое количество входных параметров от пользователя, для этого я объявил класс данных и взял ссылку в качестве входного параметра в одной из функций интерфейса.

Например:

class CInputParam
{
public:
int a;
//......
int b;
};

class ISample
{
public:
virtual void SetInputParam(CInputParam& )=0;
virtual void DoWork()=0;
};

class CConcrete : public ISample
{
};

У меня два вопроса.
1) Если в будущем мне потребуется добавить какой-либо новый входной параметр, скажем, «int c», я добавлю его в CInputParam, но это нарушит ABI, так как мне нужно перекомпилировать все мои клиенты. Что может быть лучшим решением?

2) Если мне нужно добавить новую виртуальную функцию, могу ли я получить новый интерфейс ISample2 из ISample, добавить новую виртуальную функцию и изменить конкретный класс, производный от ISample2 (ранее производный от ISample).

class ISample2 : public ISample
{
public:

virtual void NewFunction()=0;
};

class CConcrete : public ISample2
{
};

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]