Как правильно инициализировать константы в namespace в *.h *.cpp?

В языке C++, константы в namespace могут быть инициализированы в заголовочных файлах (.h) и файлов реализации (.cpp). Правильная инициализация констант в namespace включает несколько шагов:

1. В заголовочном файле (.h) объявите константу в namespace с использованием ключевого слова extern:

namespace MyNamespace {
    extern const int MY_CONSTANT;
}

2. В файле реализации (.cpp) определите значение константы:

namespace MyNamespace {
    const int MY_CONSTANT = 42;
}

3. Включите заголовочный файл в файле реализации:

#include "MyNamespace.h"

Теперь вы можете использовать константу MY_CONSTANT в любом файле, подключив заголовочный файл:

#include "MyNamespace.h"
#include <iostream>

int main() {
    std::cout << MyNamespace::MY_CONSTANT << std::endl;
    return 0;
}

Обратите внимание, что инициализация констант в namespace в файле реализации (.cpp) позволяет избежать проблем с множественным определением, если заголовочный файл включается в несколько файлов реализации.