Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Гарантия инициализации полей класса.


Автор: semibug 8.9.2012, 23:37
Ищу способ гарантировано проинициализировать все поля класса кроме явно заданых.
Например метод reset устанавливает класс в какое-то исходное состояние, и в нем явно прописано присваивание значений по умолчанию. В результате модификации класса, при добавлении новых полей можно забыть добавить инициализацию в reset.



Автор: feodorv 9.9.2012, 01:25
Вот http://forum.codenet.ru/q44763/%D0%9D%D0%B0%D0%B8%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5+%D1%8D%D0%BB%D0%B5%D0%B3%D0%B0%D0%BD%D1%82%D0%BD%D0%BE%D0%B5+%D0%BE%D0%B1%D0%BD%D1%83%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D1%87%D0%BB%D0%B5%D0%BD%D0%BE%D0%B2+%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0+%D0%BF%D1%80%D0%B8+%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8 смотрели?

Автор: borisbn 9.9.2012, 09:30
Цитата(feodorv @  9.9.2012,  01:25 Найти цитируемый пост)
Вот здесь смотрели? 

жесть.
Цитата
memset(this, NULL, sizeof(*this);

так лучше не делать. сегодня у вас структура/класс POD, а завтра вы в него вектор или строку вставите.

semibug, пользуйся статическими проверками типа http://www.viva64.com/ru/pvs-studio/ или http://cppcheck.sourceforge.net/
первые - платные (и нехило), но удобные и чего-то у них с сайтом... не открывается. надеюсь временно
вторые - бесплатные, но настраивать захекаешься... я, правда, настроил и норм. работает. как раз выдаёт ворнинг на неинициализированные поля структуры/класса

Автор: feodorv 9.9.2012, 13:08
Цитата(borisbn @  9.9.2012,  10:30 Найти цитируемый пост)
так лучше не делать.

Это http://forum.vingrad.ru/forum/topic-225220.html.

Цитата(borisbn @  9.9.2012,  10:30 Найти цитируемый пост)
жесть.

Там в конце есть решение через дефайны. Но да, жесть.

Автор: Gluttton 9.9.2012, 13:24
Цитата(borisbn @  9.9.2012,  09:30 Найти цитируемый пост)
но настраивать захекаешься

В основном все упирается в указание путей к include'ам.

Автор: borisbn 9.9.2012, 22:38
> В основном все упирается в указание путей к include'ам.
А также к исходникам, если они не в том же каталоге, что и проект

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)