LINUX.ORG.RU

Проверка на изменение членов класса

 ,


0

2

Допустим, есть какой-то класс у которого реализованы копирующий конструктор и оператор присваивания. Необходимо сделать «защиту от дурака», чтобы при последующем изменении мемберов разработчик отхватил ошибку, если забыл реализовать копирование и присваивание этих новых мемберов. Сейчас мысль сравнивать через static_assert размер класса с расчитанным размером, но тут мешает выравнивание. Какие есть варианты?

Ответ на: комментарий от panter_dsd

предоставь пример средства тестирования, а дальше - не твоя проблема.

anonymous
()

Попробуй добавить =0 к оператору

operator = (const XXX& ) = 0;

Если не определить конструктор копмрования, то не скомпилится использующий его код.

anonymous
()
Ответ на: комментарий от anonymous

Мне нужно, чтобы класс поддерживал копирование и присваивание, но при этом, при внесении изменений в класс, программист был бы предупрежден о том, что он какие-то поля не скопировал.

panter_dsd ★★★★
() автор топика
Ответ на: комментарий от anonymous

а он предупредит если скопированы 4 из 5 элементов массива?

а это уже может быть особенностью реализации

Torvus
()

Сейчас мысль сравнивать через static_assert размер класса с расчитанным размером, но тут мешает выравнивание

А если в моём подклассе есть переменная, но её не нужно копировать?

Какие есть варианты?

Не страдать хернёй. Пользователю виднее где нужно копировать, а где прострелить себе ногу.

no-such-file ★★★★★
()

лучше реализуй защиту через сокет

anonymous
()

давай для начала определение «забыл». если для нового члена нет оператора присваивания — компилятор сам напомнит. если есть — какое твоё дело что он делает?

anonymous
()

Вредные советы

А ты присваивай через memcpy()

Pavval ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.