Распространение обновления конструктора 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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