Для инициализации и использования констант в пространстве имен в файлах *.h и *.cpp необходимо следовать следующему подходу:
1. Создайте файл с расширением .h (например, constants.h) и определите в нем все нужные константы внутри пространства имен (namespace). Внутри пространства имен можно использовать другие константы и функции, нужные для определения значений констант.
constants.h:
```cpp
#pragma once
#include <string>
namespace ProjectConstants {
const std::string TITLE = "Project";
const unsigned VER_MAJOR = 0;
const unsigned VER_MINOR = 0;
const unsigned VER_PATCH = 1;
const std::string VERSION = std::to_string(VER_MAJOR) + "." + std::to_string(VER_MINOR) + "." + std::to_string(VER_PATCH);
const std::string LOCATION_SETTINGS_FILE = "C:/Users/User/Documents/" + TITLE + "/";
}
```
2. В файле constants.cpp определите значения констант из файла constants.h. Используйте полное имя пространства имен (namespace) для доступа к константам.
constants.cpp:
```cpp
#include "constants.h"
namespace ProjectConstants {
const std::string TITLE;
const unsigned VER_MAJOR;
const unsigned VER_MINOR;
const unsigned VER_PATCH;
const std::string VERSION;
const std::string LOCATION_SETTINGS_FILE;
}
// Инициализация значений констант
namespace ProjectConstants {
const std::string TITLE = "Project";
const unsigned VER_MAJOR = 0;
const unsigned VER_MINOR = 0;
const unsigned VER_PATCH = 1;
const std::string VERSION = std::to_string(VER_MAJOR) + "." + std::to_string(VER_MINOR) + "." + std::to_string(VER_PATCH);
const std::string LOCATION_SETTINGS_FILE = "C:/Users/User/Documents/" + TITLE + "/";
}
```
3. При необходимости, добавьте #pragma once в начало файла constants.h, чтобы обеспечить единичное включение файла.
4. Теперь вы можете использовать определенные константы в других файлах, подключив constants.h:
main.cpp:
```cpp
#include "constants.h"
#include <iostream>
int main() {
std::cout << "Title: " << ProjectConstants::TITLE << std::endl;
std::cout << "Version: " << ProjectConstants::VERSION << std::endl;
std::cout << "Location: " << ProjectConstants::LOCATION_SETTINGS_FILE << std::endl;
return 0;
}
```
В данном примере мы инициализируем и используем константы в пространстве имен ProjectConstants. Обратите внимание на использование "::" для доступа к константам внутри пространства имен.