c++ - 如何在不同文件中使用嵌套命名空间?

标签 c++ namespaces

//file.h

namespace first
{
  namespace second
  {
     void foo();
  }
}

//file.c
using namespace first::second;

void foo()
{
 ...
}

//main.c
using namespace first::second;
int main()
{
  foo();
}

上面的代码不起作用,因为编译器无法识别 foo()。我的错误在哪里?

最佳答案

试试这个:

这会将实现放入命名空间

//file.c
namespace first
{
  namespace second
  {
   void foo()
   {
 ...
    }
  }
}

这明确告诉 main 在哪里可以找到 foo:

//main.c
int main()
{
  ::first::second::foo();
}

关于c++ - 如何在不同文件中使用嵌套命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754760/

相关文章:

c++ - 共享库和 libpthread.so 的 g++ 问题

c++ - 显示图像第 2 版

c++ - "queue"允许的底层容器

php - 如何解决 Laravel(IoC 容器)中的 BadMethodCallExeption

c++ - 类方法返回指向具有模板的类成员的指针

c++ - QDrag 在拖动时被破坏

wcf - DataContractAttribute.Namespace 属性的格式是什么?

c# - 为什么在 C# 中添加命名空间别名可以消除歧义?

scala - 如何在 Scala 中构建合适的命名空间?

xml - 用 xslt 创建一个 xaml