c++ - 在命名空间中定义一个函数

标签 c++ namespaces

namespace n1 {
  namespace n2 {
    ...
    int myfunc(void)
      {
         return 1;
      }
    class myclass {
      ..
    };
  }
}

我认为可以这样定义一个函数,并从“myclass”及其派生类访问它。然而 gcc 甚至不想编译这段代码:

multiple definition of `n1::n2::myfunc()'

这里只有这个功能,我错过了什么? 谢谢。

最佳答案

您需要将函数标记为 inline 以避免破坏单一定义规则,或者将实现放在 .cpp 文件中,并且只保留声明在标题。

关于c++ - 在命名空间中定义一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19103353/

相关文章:

c++ - Qt 将字符串转换为 16 进制的 int 但保留 16 进制的值

c++ - 什么时候在 C++ 中使用静态(在未命名的命名空间上)是合适的?

c++ - 两个未命名的命名空间,在同一个声明区域中定义

C# 单元(文件范围)命名空间

c++ - 如何使用C++检查Lua中是否存在预加载模块

c++ - 在 MFC 中序列化为 Unicode 文本文件 - 错误的文件头

c++ - 如何使用构造函数初始化另一个类中的对象?

c++ - std::tie 是如何工作的?

Python静态方法无法访问成员/类变量

c# - 在 C# 中的多个类中使用相同的命名空间是一种常见的做法吗