#ifndef TEST_H
#define TEST_H
#include <iostream>
#include <string>
class A{
public:
virtual void test1() = 0;
virtual std::string test2() = 0;
};
class B : public A{
public:
void test1(){
std::cout << A::test2() << " World";
}
};
class C : public B{
public:
std::string test2(){
return "hello";
}
};
class C1 : public B{
public:
std::string test2(){
return "Sup";
}
};
#endif // TEST_H
순수 가상 메서드 만있는 인터페이스 A가 있습니다. 나는 test1
을 구현하고 test1
을 구현하기 위해 test2
을 사용하고자하는 추상 클래스를 가지고있다.추상 클래스에서 순수 가상 메서드 사용
이제 C와 C1 및 test2
을 구현하지만
error: cannot call member function 'virtual std::string A::test2()' without object
어떻게 C에서 이런 일을 할 것이다 클래스 B에 std::cout << A::test2() << " World";
을 할 수없는 내 구체적인 클래스 ++?
'A'와 'B'는 전혀 관련이 없습니다.그래서 당신은 그렇게 할 수 없습니다. 이 작업을 수행하려면'B'가'A'를 상속 받아야합니다. 당신의 디자인에 어떻게 어울리는 지 확신 할 수 없습니다. –
클래스가'A'의 인터페이스를 구현하기 위해서는'A'에서 실제로 _inherit_해야합니다. –
예. 미안 해요. –