美文网首页
解决基多重继承类纯虚函数名字冲突问题

解决基多重继承类纯虚函数名字冲突问题

作者: 大啸 | 来源:发表于2022-12-06 13:42 被阅读0次
#include <iostream>

class TestA
{
public:
    TestA() = default;
    virtual ~TestA() = default;

    virtual void run() = 0;
};

class TestB
{
public:
    TestB() = default;
    virtual ~TestB() = default;

    virtual void run() = 0;
};

template<class TMaster>
class TestAImpl : public TestA
{
public:
    TestAImpl() = default;
    ~TestAImpl() override = default;

    void run() override
    {
        TMaster* pThis = static_cast<TMaster*>(this);
        pThis->runA();
    }
};

template<class TMaster>
class TestBImpl : public TestB
{
public:
    TestBImpl() = default;
    ~TestBImpl() override = default;

    void run() override
    {
        TMaster* pThis = static_cast<TMaster*>(this);
        pThis->runB();
    }
};

class Master : public TestAImpl<Master>, public TestBImpl<Master>
{
public:
    Master() = default;
    ~Master() override = default;

    void runA()
    {
        std::cout << "runA" << std::endl;
    }

    void runB()
    {
        std::cout << "runB" << std::endl;
    }
    
};

template<class T>
void fun(T* obj)
{
    obj->run();
}

int main(int argc, char* argv[]) 
{
    Master* test = new Master;
    fun<TestA>(test);
    fun<TestB>(test);
    delete test;
}

相关文章

  • ★01.基础概念

    抽象类:含有虚函数的类。 抽象基类:含有纯虚函数的类。 虚基类:多重继承中虚继承的基类。 类静态数据成员的定义必须...

  • c++虚继承

    什么时候用到虚继承 虚继承和虚函数是完全无相关的两个概念。 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继...

  • C++——类层次结构

    多重继承 多重继承的定义:有至少两个基类 多个基类拥有同名的函数: 基类的重复继承:

  • 构造语义学

    继承构造函数 类具有可派生性,派生类可以自动的获取基类的成员变量和接口(虚函数和纯虚函数,public派生)。不过...

  • C++ 虚函数、纯虚函数、虚基类、抽象类

    纯虚函数:纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现...

  • C++虚函数和虚继承探秘

    什么是继承?什么是多重继承?多重继承存在变量和函数名冲突怎么办?子类对象和父类对象的内存模型是什么样的?虚继承如何...

  • 抽象类和纯虚函数

    //纯虚函数 //如果父类中有了 纯虚函数 //1.子类继承父类,就必须要实现纯虚函数 //2.这个父类 就无法实...

  • C++抽象类(纯虚函数)

    C++抽象类 一、纯虚函数定义. 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己...

  • 为什么要有虚继承?是为了解决什么问题?

    虚继承是解决 C++ 多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题...

  • 多重继承(Multiple Inheritance)

    多重继承允许子类拥有多个基类,要将作为纯接口的基类和具有实现的基类区别开来。 优点:多重实现继承比单继承重用更多代...

网友评论

      本文标题:解决基多重继承类纯虚函数名字冲突问题

      本文链接:https://www.haomeiwen.com/subject/crwwfdtx.html