已声明存根 class

Stubbing class has already been declared

我正在对 class“myClass”及其 50 多个成员“myMemberFunction*”进行单元测试。

我不想每次都写class名字,所以我尝试了以下方法:

namespace myNamespace{

  myClass::myClass()
  {
    // constructor code
  }

  namespace myClass {
    void myMemberFunction1()
    {
      // function 1 code
    }
    void myMemberFunction2()
    {
      // function 2 code
    }
  }
}

编译时出现错误“myClass 已在当前范围内声明”。但是,以下工作:

namespace myNamespace{

  myClass::myClass()
  {
    // constructor code
  }
  void myClass::myMemberFunction1()
  {
    // function 1 code
  }
}

有没有办法让我不必在每个函数存根之前都写“myClass::”? 我怎么会误解名称空间?

类 和命名空间是两个不同的东西。您不能使用 namespace myClass 并在其中定义所有成员。每次在 class.

之外定义它时都必须使用 <return type> myClass::<function>

您可以使用 Visual Assist, Intellisense 等工具为您创建函数定义。但除此之外,你不能像命名空间一样使用 classes。另一种选择是在 class 主体本身内部定义函数。这可能会在您每次编辑 class 时出现问题,因为所有使用您的 class 头文件的源文件都将被重新编译。

参考文献:MSDN documentation