【问题标题】:using keyword for make public a protected overloaded method [duplicate]使用关键字公开一个受保护的重载方法[重复]
【发布时间】:2014-11-13 18:19:24
【问题描述】:

我尝试搜索此问题的解决方案,但找不到任何解决方案。 这是我的课:

class X;
class MyClass
{
  public:
    MyClass();

  protected:
    // ctor for unit test
    MyClass(std::shared_ptr<X> p_x);
};

在单元测试中:

class FakeClass : public MyClass
{
  public:
    using MyClass::MyClass;
};

在测试中我想使用它:

FakeClass myFake(std::shared_ptr<X>(new X));

但是 g++ 说:

MyClass::MyClass(std::shared_ptr) 受到保护

如何指定具体的使用方法?

【问题讨论】:

    标签: c++ unit-testing using


    【解决方案1】:

    FakeClass 可以使用 MyClass 构造函数,但无论您从哪里构造 FakeClass 都不能 - 它不是朋友或派生类型。

    您必须编写一个 public FakeClass 构造函数,这就是调用 MyClass 受保护构造函数的原因:

    FakeClass(std::shared_ptr<X> p)
    : MyClass(p)
    { }
    

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2016-03-19
      • 2012-05-31
      • 2015-08-09
      • 2016-07-25
      • 1970-01-01
      • 2018-01-05
      • 2015-05-16
      • 2011-07-21
      相关资源
      最近更新 更多