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

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

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

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

4

1 回答 1

9

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

于 2013-09-30T20:38:36.240 回答