는 :기본 클래스에서 인터페이스를 사용하는 방법? 다음 코드를 고려
#include <stdio.h>
struct ITimer {
virtual void createTimer() = 0;
};
class A : public ITimer
{
public:
void showA() {
printf("showA\n");
createTimer();
}
};
class B : public ITimer
{
public:
void showB() {
printf("showB\n");
}
void createTimer() {
printf("createTimer");
}
};
class C: public A, public B
{
public:
void test() {
showA();
showB();
}
};
int main()
{
C c;
c.test();
return 0;
}
내가 클래스 A의 인터페이스 ITimer를 사용할 필요가
하지만 방법은 클래스 B에서 구현 그래서 나는 A의 인터페이스를 상속하지만, 컴파일러는 그것으로 행복하지 않다 :
그 방법은감사 클래스 B에서 구현되는 동안
test.cc
test.cc(38) : error C2259: 'C' : cannot instantiate abstract class
due to following members:
'void ITimer::createTimer(void)' : is abstract
test.cc(5) : see declaration of 'ITimer::createTimer'
어떻게의 base class A의 인터페이스를 사용할 수 있습니다.
왜'A' 상속'ITimer'은 무엇입니까? – Nawaz
어떤 컴파일러를 사용하고 있습니까? – Saravanan
@Nawaz : 클래스 A에서 인터페이스 ITimer를 사용해야하지만 메서드는 클래스 B에서 구현됩니다. 따라서 A에서 인터페이스를 상속받습니다. – Jichao