Безымянное пространство в C++
Не каждое имя должно быть видно всему проекту.
Безымянное пространство в .cpp ограничивает
область видимости: функции и переменные внутри
namespace { ... } существуют только в этом
файле. Снаружи к ним не обратиться, зато имя не
конфликтует с таким же в другом .cpp.
Публичная функция run объявлена в заголовке,
а локальный помощник step спрячем в cpp:
#ifndef APP_H
#define APP_H
void run();
#endif
В app.cpp помощник живет в безымянном пространстве:
#include <iostream>
#include "app.h"
namespace {
void step() {
std::cout << "step\n";
}
}
void run() {
step();
}
Сделайте start в game.h и в game.cpp
вызовите из нее скрытую boot, которая выводит
ready.
Попробуйте вызвать step из main.cpp -
компилятор не должен найти имя.