存根类已经声明

时间:2021-02-04 09:08:04

标签: c++ namespaces stub

我正在为单元测试存根类“myClass”及其 50 多个成员“myMemberFunction*”。

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

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::”? 我是如何误解命名空间的?

1 个答案:

答案 0 :(得分:0)

类和命名空间是两个不同的东西。您不能使用 namespace myClass 并定义其中的所有成员。每次在类外定义它时都必须使用 <return type> myClass::<function>

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

参考文献:MSDN documentation

相关问题