게시 한 코드가 잘못되어 혼란 스럽습니다.
A*pa=new B();
int*pi=pa->bar();
Thats not that! A에는 bar() 함수가 없습니다. B 객체 만 만들면 A로 캐스팅됩니다 (실제로는 누락 된 것).
정확히 무엇을하고 싶은지 확실하지 않지만 인터페이스와 비슷한 것으로 생각됩니다. 인터페이스는 다음과 같이 작동합니다. (순수한) 가상 함수 집합을 정의하는 추상 기본 클래스가 있으며 "loadData, saveData"등의 고정 된 기능 집합을 설명하지만이 기능을 구현하는 방법은 설명하지 않습니다. 당신은 실제로 XML 파일에 데이터를 저장하거나 등 평면 바이너리로 (참고 : 하나는 그것을 위해 스트림을 사용하지만, 내 경우에는 내가 예제로 사용) 할 수
class YourInterface {
public:
YourInterface(){
}
virtual ~YourInterface(){
}
virtual void saveData(Data data) = 0; //Pure virtual = Childs are forced to implement those functions to become non abstract
virtual Data loadData() = 0;
};
//One implementation to load and save data to/from a xml file
class XmlImplementation : public YourInterface {
public:
XmlImplementation(){
}
virtual ~XmlImplementation(){
}
//Overriding functions:
void saveData(Data data){
//Save data to a xml file here
}
Data loadData(){
//Load data from a xml file here
}
};
void main(){
YourInterface* p;
p = (YourInterface*) new XmlImplementation();
p->loadData(); //We just want to get our Data here, we dont care whether its from a xml or binary file etc.
}
참고 :에 대한 죄송합니다 끝나지 않은 게시물 나는 우연히 버튼을 누르십시오.
'클래스 A'가상 소멸자는 어디에서 발생 했습니까? – sharptooth
대답이 불가능합니다. 너 뭐하려고? –
좋은 C++ 책을 준비하고 시작하는 것이 좋습니다. 당신은 명확하게 * 상속 *의 개념을 이해하지 못합니다! – Nim