Как бы вы ни делали, нужно быть осторожным с одной вещью: я бы не рекомендовал использовать статические объекты std :: string, вместо этого используйте static char *. Причина этого связана с потенциальными проблемами с порядком инициализации. Допустим, у вас есть статический экземпляр класса, конструктор которого ссылается на строку A::f1
. Нет никакой гарантии, что A::f1
был построен, и вы получите сбой, или, что еще хуже, не сбой, а поддельные данные.
Отслеживание ошибок порядка инициализации может быть довольно неприятным, и все может выглядеть хорошо в одном проекте, но тогда вы можете построить другой проект с использованием тех же библиотек, и незначительные различия в порядке ссылок приведут к этой ошибке загадочно появляются.