c ++如何将类声明为文件的本地

Cod*_*ith 7 c++ static scope class translation-unit

所以,我知道静态函数是文件本地的函数.因此,无法从其他文件访问它们.这也适用于课程吗?我已经阅读了很多关于如何static class不声明类包含纯静态成员和方法(很明显)的争议,但无法找到任何提及是否会声明该类在本地可访问的类文件范围,更合乎逻辑.

如果它没有,那么使用匿名命名空间怎么样,我听说过也可以用来声明文件本地函数?

Vla*_*cow 17

例如,您可以在未命名的命名空间中定义类

namespace
{
    struct A {};
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,类名将具有内部链接.也就是说,它只在定义它的编译单元中可见,并且包含该定义的所有编译单元都有自己的类定义.

至于存储类说明符static(7.1.1存储类说明符)

5静态说明符只能应用于变量和函数的名称以及匿名联合