如何在C++中解决以下多个接口类

How to solve following multiple interface classes in C++

本文关键字:接口 解决 C++      更新时间:2023-10-16

>我有一个类测试,它实现了不同的接口接口1和接口2。有一个 FactoryClass 可以创建此类 Test 的对象。

class Interface1{   
    virtual void function1() = 0;
};
class Interface2{
       virtual void function2() = 0;
};
class Test(): public Interface1, public Interface2{
void function1()
{
}
void function2()
{
}
};
class FactoryClass
{
    Interface1* createInstance() {
    Interface1* interface1 = new Test();
    return  interface1;        
}
};
void main()
{
    Interface1* int1 = FactoryClass::createInstance();
    int1->function1();
}

我需要一个解决方案来通过接口 2 访问功能2,而无需再次做新的?

在代码中,你有很多错误,比如将函数声明为function1function2为私有。

修复错误后,您的代码可以正常编译。

class Interface1
{   
    public:
        virtual void function1() = 0;
};
class Interface2
{   
    public:
        virtual void function2() = 0;
};
class Test : public Interface1, public Interface2
{
public:
    void function1()
    {   
    }
    void function2()
    {
    }
};
class FactoryClass
{
public:
    static auto createInstance() {
        return new Test();        
    }
};
int main()
{
    auto int1 = FactoryClass::createInstance();
    int1->function1();
    int1->function2();
}

现场演示