다음 코드를 작성했습니다.여러 레벨을 가진 추상 클래스
#include <iostream>
using namespace std;
class CI
{
public:
virtual void display() =0;
};
class Inter: public CI
{
public:
int parseData (int);
};
Inter::parseData (int data)
{
cout <<"Parsing the data "<<data;
return data*100;
}
class Last: public Inter
{
public:
void display();
};
void Last::display()
{
cout <<" Last:: Displaying From Last "<<endl;
}
class USB: public Inter
{
public:
void display();
};
void USB::display()
{
cout <<" USB:: Displaying From Last "<<endl;
}
int main (int argc, char ** argv)
{
int temp;
CI *obj = new Last;
obj->display();
temp = obj->parseData (100);
cout <<"Parsed DAta .. "<<temp<<endl;
delete obj;
obj = new USB;
obj->display();
temp = obj->parseData (200);
}
내 질문은 :
이유는>를 OBJ 호출 할 수 parseData 기능 아니에요? 내 이해에 따라 클래스 '마지막'및 'USB'는 '인터'클래스에서 파생되므로 올바른 호출 가능해야합니다 ... ..
제 이해가 잘못 된 부분을 자세히 알려주십시오.
아니오 obj가 유형 CI이고 parseData가 가상이 아니기 때문에 이는 CI 클래스 – sethi
에서만 parseData 구현을 찾습니다. 메소드를 사용할 수있게하려면 선언 된 수준의 포인터를 사용해야합니다. 'parseData'는'CI'에서 선언되지 않았습니다. – StoryTeller