вы получаете «static» в области видимости файла, перепутанной с «private» в контексте класса.
Чтобы метод или элемент данных в классе был закрытым, просто поместите его в 'приватный, а не публичный раздел класса, этот
class Foo
{
private:
int dosomething();
public:
Foo();
};
тогда dosomething () может быть вызван только внутри методов в Foo.Статическая функция
class Foo { public: static wibble(); }
была бы похожа на сатиническую функцию Java в том смысле, что вы можете вызывать Foo :: wibble () без экземпляра Foo.
Я полагаю, что использование static в файловой областиустарела, и вместо этого рекомендуется использовать анонимное пространство имен.
static int iamrunninoutofnames() { .... }
является глобальным для файла, в котором оно объявлено, но недоступно за пределами этого файла.
namespace { int iamrunninoutofnames() { .... } }
аналогичен по своему действию, но может быть более гибким, если вы используете его осторожно.