누군가가 이미 요청했다,하지만 난 여기에 이상한 행동을 보면 확실하지 : 나는 두 개의 클래스, 하나 개의 기본과 하나의 가상 메서드 display()
도출을 선언 한스마트 포인터 (auto_ptr은) 행동
합니다.
class A {
public:
virtual void display() {
cout << "base class" << endl;
}
};
class B:public A {
public:
void display() {
cout << "derived class" << endl;
}
};
지금, main()
에, 나는
int main() {
auto_ptr<A> *a = (auto_ptr<A>*)new B();
a->display();
}
나는 컴파일에 오류가 발생,
A
의
auto_ptr
을 선언하고 그것을
B
의 새로운 인스턴스를 할당하려고하면 :
"
'class std::auto_ptr<A>'
에는 'display'라는 회원이 없습니다."
내가 잘못하고 있니? 누군가가 그 행동을 설명 할 수 있습니까?
서식을 수정했습니다. 질문을 쓸 때 미리보기를 사용하여 형식이 올바른지 확인할 수 있습니다. 귀하의 경우에는 인용 된 텍스트를 소스 코드와 혼합합니다. –
@KonradRudolph 감사합니다. 나는 다음에 이것을 돌볼 것이다. 나는 StackOverflow와 C++ 프로그래밍에 오랜 시간이 지난 뒤로 돌아 왔고 따라서이 오류들 :). – Shree