【发布时间】:2014-11-24 11:52:29
【问题描述】:
我想知道它可用于声明接口并使用多继承实现接口。
例如。
我为接口声明抽象类。
class Interface{
public:
virtual int interf1(int a) = 0;
virtual int interf2(char c) = 0;
};
为了实现这两个接口,我为每个接口定义了两个类,如下所示
class Implement1{
public:
int interf1(int a){
std::cout << a << a << std::endl;
return 0;
}
};
class Inplement2{
public:
int interf2(char c){
std::cout << c << c << c << std::endl;
return 0;
}
};
然后作为最后阶段,我定义了一个继承接口并实现所有类的类。
class Test : public Interface, public Implement1, public Inplement2{
};
当然,它没有被编译。
有没有办法构建这种功能?
实际上,我在努力使它像下面那样编译时找到了一些方法,但我不确定它是不是不会产生潜在错误的安全方法,即使现在它似乎可以工作,因为它是简单的代码。
class Test : public Interface, private Implement1, private Inplement2{
public:
virtual int interf1(int a){
return Implement1::interf1(a);
};
virtual int interf2(char c){
return Inplement2::interf2(c);
}
};
【问题讨论】:
-
你了解C++中的私有继承是什么意思吗...
-
在您的第一个示例中,
Test是一个抽象类。当你有一个抽象基类时,你必须在你的派生类中实现函数。 -
@remyabel 谁告诉你的?您不必实现所有这些(甚至不是一个)。结果只是另一个抽象类。当你尝试实例化一个类时,它不能是抽象的,因此那个类需要实现所有的抽象函数。
-
已经用这个Possible Duplicate关闭了这个。重新打开以供其他人参考。版主可能会再次关闭它。
标签: c++ inheritance interface implements