Хочу поинтересоваться у опытных старших товарищей, на сколько страшно когда в классе есть статик поля нетривиальных классов.
стандарт_кодинга_гугла говорит что не стоит использовать в качестве глобальных статиков ничего что нетривиально создаётся и разрушается.
Но что делать, если это было бы очень удобно?
Например возьмём простейший случай где в Си++ используются нетривиальные типы - это строки, причем некоторые строки конструируются через конкатинацию других constStaticStrN(constStaticStr1 + constStaticStr2)
Не использовать же Си-строки в 2018 году в Си++.
Я конечно не принципиально против Си-строк, я даже за них, но очень ограниченно - например передать как параметр в какой-нить устоявшийся интерфейс, где действительно нет нужды сначала собирать std строку. - например в std::ifstream - обычно нет смысла передавать std::string (т.к. внутри себя он всеравно работает с си строками, по крайней мере в g++)
Во всех других случаях я не хочу работать с Си строками. В том числе и с константными строками, которые нужно сравнивать с каким-то значением, обращаться к их размеру, конкатенировать в другие (уже не статик) строки - не хочется портить код в данном случае Си-шными string.h и т.п.
Но при этом не хочется константные строки, которые должны быть едины для всех экземпляров класса держать как нестатик члены класса, ибо нафиг их каждый раз конструировать, когда можно только однажды.
Итак как поступить с этим, чтобы было гарантированно безопасно и при этом с точки зрения проектирования - красиво и по возможности строки эти хранились исключительно в классе, и никто кроме класса о них не знал?
Если не в классе, то можно придумать синглтон объект словарь, содержащий с++строки и конструирующийся обязательно раньше класса который эти строки будет пользовать - возможно красивое решение, но всеравно хотелось бы чтобы был один класс и умел в себе безопасно хранить статик строки.