Защита переменных и функций в библиотеке, не имеющей класса

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

class Lib{
  public:
    // Все это может быть доступно извне
    void function1();
    void function2();
    int someNumber;
  private:
    // К этим двум нельзя получить доступ извне
    void secretFunction();
    int secretNumber;
};

У меня такой вопрос:

Я хочу написать эту библиотеку без использования классов. Как в этом случае защитить вещи от доступа откуда угодно?

, 👍0


1 ответ


Лучший ответ:

1

Если ваша библиотека реализована в одном файле .cpp, вы можете определить эти переменные и функции в этом файле и дайте им static квалификатор:

static int my_private_variable = 42;

static void my_private_function()
{
    ...
}

Очевидно, что в файле .h о них не должно быть упоминания.

Обратите внимание, что мы говорим о глобальных переменных. Локальные переменные уже скрыты внутри определяющей функции.

,

Именно то, что я искал. Проверьте этот вопрос: https://stackoverflow.com/questions/17554515/hiding-private-members-of-c-library/59093688#59093688 вы тоже ответили на это!, @LukasFun