Распространение обновления конструктора C++ в клиентскую кодовую базуC++

Программы на C++. Форум разработчиков
Гость
Распространение обновления конструктора C++ в клиентскую кодовую базу

Сообщение Гость »

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

Код: Выделить всё

struct A {
A() {}
A(int x) {}
A& operator+=(const A& other);
std::array data;
};
ранее класс A имел в качестве члена статический массив фиксированного размера. Теперь, согласно новым требованиям, размер массива больше не фиксирован и должен быть динамическим массивом. Информация о том, каким должен быть размер, хранится в классе B.

Теперь, с учетом нового требования, у меня есть добавление обязательного аргумента ко всем конструкторам класса A.

например. класс A теперь будет выглядеть так:

Код: Выделить всё

struct A {
A(B *b) { size = b->getSize(); data = new int[size];}
A(B *b, int x) { size = b->getSize(); data = new int[size]; }
int *data;
};
Проблема в том, что в текущем клиентском коде класс A создается в нескольких местах. (вероятно,> 10 000 экземпляров), и обновление всех мест невозможно.
Есть ли какой-нибудь трюк/шаблон C++, который может помочь мне беспрепятственно (или с минимальными изменениями) распространить это изменение на клиентский код?
Я пытаюсь придумать решение, но не могу его придумать.
Буду очень признателен за любые подсказки.

Источник: https://stackoverflow.com/questions/781 ... t-codebase

Вернуться в «C++»