如何在不使用对象的情况下调用父类成员函数内的子成员函数

时间:2020-08-24 07:29:20

标签: c++ oop c++11 googletest googlemock

如何在父类的成员函数内调用子成员函数 这需要作为gtest和gmock的一部分来实现。

示例:

class Base
{
public:
    void my_read()
   {
      cout << "Base read\n";
   }
    void my_write()
   {
      cout << "Base write\n";
       my_read();
    }
};

class Derived: public Base
{
    public:
    void my_read()
    {
        cout << "Derived read\n";
     }
};
int main()
{
   Derived d;
   d.my_write();
   return 0;
 }

所需的输出是:

   Base write
   Derived read

实际输出为:

   Base write
   Base read

由于这是编写测试用例的情况,因此我无法更改代码实现。 考虑到派生类是来自Base的Mock类,我对my_read()有特定的实现。 如何在子级中使用此实现而不传递任何其他实例。

1 个答案:

答案 0 :(得分:0)

我还只是看到一个解决方案,用my_read()声明了virtual(这对基数有一点修改):

virtual void my_read()
{
  std::cout << "Base read\n";
}

解决您的问题。输出为:

Base write
Derived read