gpt4 book ai didi

c++ - 命名空间对我来说没有意义

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:15 26 4
gpt4 key购买 nike

假设我在头文件中定义了以下内容:

namespace MyNamespace
{
Class global_c;
}

然后我在源文件中这样做:

namespace MyNamespace
{
void MyClass::Function( )
{
::global_c.DoSomething( );
}
}

如果我只执行 global_c.DoSomething( ),global_c 会被编译器未定义;但是如果我添加'using namespace MyNamespace;'它编译得很好到文件的顶部,它也可以正常工作。

既然 global_c 与“MyClass”位于同一个命名空间中,为什么它不能仅仅因为“::”被添加到它的前面而被解析?

最佳答案

因为您通过在变量前加上 :: 来明确告诉编译器使用全局命名空间。由于 global_c 在全局命名空间中不存在,因此会引发错误。

编译器只是按照您的指示进行操作。将 :: 视为 Global::

关于c++ - 命名空间对我来说没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com