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

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

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


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

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

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

Теперь, с учетом нового требования, у меня есть добавление обязательного аргумента ко всем конструкторам класса A.< br />
напр. класс 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;
};
The problem is, in the current client code, class A is instantiated at multiple places. (probably > 10,000 instances) and updating all places is not feasible.
Is there any C++ trick / pattern that can help me to propagate this change to client code seamlessly (or with minimal changes)
I am trying to think of a solution but couldn't think of any.
Any pointers would be greatly appreciated.


Источник: https://stackoverflow.com/questions/781 ... t-codebase
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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