【问题标题】:Stubbing class has already been declared存根类已被声明
【发布时间】:2021-02-04 09:08:04
【问题描述】:

我正在对“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::”? 我对命名空间有什么误解?

【问题讨论】:

    标签: c++ namespaces stub


    【解决方案1】:

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

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

    参考:MSDN documentation

    【讨论】:

    • 感谢您的回答。我以为我可以使用命名空间 myClass,因为将 myNamespace::myClass::myFun() 分解为命名空间 myNamespace{ void myClass::myFun() } 有效。
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多