рассматривает следующий код:Как использовать интерфейс в базовом классе?
#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;
}
мне нужно использовать интерфейс ITimer в классе А, но метод реализован в классе В. Таким образом, я унаследовал интерфейс в A, но компилятор не доволен этим:
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'
Как я мог бы использовать интерфейс в BaseClass А, а его метод реализован в классе В.
Спасибо.
Почему '' A' наследует ITimer'? – Nawaz
Какой компилятор вы используете? – Saravanan
@Nawaz: «Мне нужно использовать интерфейс ITimer в классе A, но метод реализован в классе B. Таким образом, я унаследовал интерфейс в A,' – Jichao