У меня есть три функции, которые будут использоваться в разных классах проекта. Функции используют (только читают) общие переменные, но управляют входными данными иначе, чем друг с другом.
Я не уверен, как обернуть эти функции. Я практически не хочу, чтобы пользователю были доступны обычные переменные, доступные только для чтения. Я придумал два решения:
- C - подход только к стилю заголовка. Это решение позволяет пользователю видеть var0 и var1. Чего я не хочу. (Подход с использованием пространства имен также не может скрыть переменные только для чтения AFAIK.)
#ifndef FUNC_H
#define FUNC_H
const int var0 = 30;
const int var1 = 75;
void func0(float input0)
{//manipulate input0//}
void func1(float input1)
{//manipulate input1//}
void func2(float input2)
{//manipulate input//}
#endif //FUNC_H
Классовый подход
#ifndef FUNC_H
#define FUNC_H
class Func
{
public:
static void func0(float input0);
static void func1(float input1);
static void func2(float input2);
private:
Func();
static const int var0 = 30;
static const int var1 = 75;
};
void Func::func0(float input0){}
void Func::func1(float input1){}
void Func::func2(float input2){}
#endif //FUNC_H
Это работает, но я не уверен, что это правильный способ достичь того, что я хочу. По сути, я хочу обернуть их аналогично библиотекам STL. Что посоветуете?