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

Mar*_*ark 0 c++ namespaces

namespace n1 {
  namespace n2 {
    ...
    int myfunc(void)
      {
         return 1;
      }
    class myclass {
      ..
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为可以用这种方式定义一个函数,并从'myclass'及其派生词中访问它.但是gcc甚至不想编译这段代码:

multiple definition of `n1::n2::myfunc()'
Run Code Online (Sandbox Code Playgroud)

这个功能是这里唯一的一个,我错过了什么?谢谢.

jua*_*nza 9

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