gpt4 book ai didi

c++ - C++ 中的嵌套命名空间

转载 作者:IT老高 更新时间:2023-10-28 12:41:04 27 4
gpt4 key购买 nike

当有嵌套的命名空间和对象声明时,我很困惑该怎么做。

我正在移植一些链接到具有一些命名空间的静态库的代码。

我所说的例子:

namespace ABC {

namespace XYZ {

//STUFF
}
}

如何在代码中声明一个位于命名空间 XYZ 中的对象?

如果我尝试:

XYZ::ClassA myobject;

或:

ABC::XYZ::ClassA myobject;

或:

ABC::ClassA myobject;

我明白了

does not name a type

错误,即使 ClassA 确实存在。

这里有什么合适的?

最佳答案

这取决于你已经使用的命名空间:

如果您不在命名空间或另一个不相关的命名空间中,则必须指定整个路径 ABC::XYZ::ClassA

如果您在 ABC 中,则可以跳过 ABC 并直接编写 XYZ::ClassA

另外,值得一提的是,如果要引用不在命名空间(或“根”命名空间)中的函数,可以在其前面加上 :::

例子:

int foo() { return 1; }

namespace ABC
{
double foo() { return 2.0; }

void bar()
{
foo(); //calls the double version
::foo(); //calls the int version
}
}

关于c++ - C++ 中的嵌套命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199139/

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