Позвольте мне попытаться перефразировать то, что вы пытаетесь сделать здесь. Вы хотите, чтобы разработчики, использующие ваш код, могли ссылаться на предварительно определенный набор числовых значений:
- используя интуитивно понятные имена
- , который будет проверен во время компиляции
- и что IDE распознает для завершения кода.
Если значения не изменятся во время выполнения и являются целочисленными значениями, вы можете использовать перечисление, как показал Марк Рэнсом.
Если значения не изменятся во время выполнения и не являются целочисленными значениями, вы можете использовать переменные #define или const:
#define PART1 1.3
#define PART2 "1233-456"
или
namespace PartNumbers
{
const double Part1 = 1.3;
const char* Part2 = "123-456"
}
Если значения могут изменяться во время выполнения, вы можете использовать любой из двух указанных вами вариантов. Обе эти опции имеют тот недостаток, что требуют создания экземпляра объекта, который содержит текущие значения номера детали. Другие параметры проще реализовать и не требуют поиска во время выполнения. Все решается во время компиляции.
Все эти параметры требуют, чтобы пользователи вашего кода перекомпилировали, если они хотят получить доступ к новым типам деталей. Ваш первый вариант может потребовать перекомпиляции существующего кода при добавлении новых типов частей, даже если существующий код не имеет к ним доступа; он более подвержен изменениям в макете памяти.