Статические константы класса и что с ними делать?

159
09 августа 2018, 08:00

У меня есть два класса, которые раскинуты по разным хэдэрам и сурсным файлам, при этом в каждом из них есть некоторое количество статических констант, вроде:

//a.hpp
class A {
public:
    static const Koord a;
}
//b.hpp
class B {
public:
    static const Koord a;
}

где Koord - это свой класс (не имеет статических констант). При этом A.a зависит от B.a и, поэтому для инициализации B.a нужно уже определенная A.a... Иначе, конечно проблема. Так вот: как и где лучше проинициализировать эти статические константы? Я вынес обе инициализации из обоих классов в один отдельный файл и все работает как надо, но выглядит не камильфо, когда в одном файле происходит такое:

const Koord B::a = 1;
const Koord A::a = B::a + 1;
Answer 1

Если глобальная переменная (пусть и const) зависит от другой глобальной, то они как минимум должны быть определены в одной единице трансляции. Иначе, может возникнуть ситуация, именуемая static initialization order fiasco. Т.к. языком не гарантируется порядка инициализации глобальных переменных между разными единицами трансляциями. Пока всё живёт в одном файле проблем быть не должно.

READ ALSO
Как сделать сравнение юникод строки из файла и const wchar_t*?

Как сделать сравнение юникод строки из файла и const wchar_t*?

Я перехватываю перемещение файла, в файле permissiontxt через \n записаны пути до файлов, которые перемещать нельзя Сейчас сильно остановился на больной...

203
CaptureStackBackTrace(…) Выдаёт неполный стек вызовов на x86

CaptureStackBackTrace(…) Выдаёт неполный стек вызовов на x86

А на x64 тот же самый код нормально работает, выдаёт полный стекВ чём может быть проблема? Может быть кто-нибудь сталкивался с подобной проблемой?

203
Порядок отрисовки компонентов

Порядок отрисовки компонентов

Есть JPanel на которой расположена кнопка и другая дочерняя панель закрашенная красным цветомДочерняя панель должна отрисовываться после...

203
Передача данных List на jsp страницу

Передача данных List на jsp страницу

Проблема в том что данные по какой-то причине не отображаются и таблица с помощью цикла не заполняетсяЯ предполагаю что данные почему-то...

191