2
먼저 클래스 B1과 파생 클래스 D1을 정의합니다. 그런 다음 B1에 대한 참조를 정의하고 방금 정의한 D1 객체로 초기화하려고합니다. 여기에 "액세스 할 수없는 기본 클래스 'B1'로의 변환이 허용되지 않는다는 오류가 있습니다. 이유는 알 수 없습니다. 클래스의액세스 할 수없는 기본 클래스로의 변환이 허용되지 않습니다.
#include "std_lib_facilities.h"
class B1 {
public:
virtual void vf() { cout << "B1::vf()\n"; };
void f() { cout << "B1::f()\n"; };
};
class D1 :B1 {
public:
void vf() { cout << "D1:vf()\n"; };
void f() { cout << "D1::f()\n"; };
};
int main()
{
B1 b1;
b1.vf();
b1.f();
D1 d1;
d1.vf();
d1.f();
B1& db=d1;//error
keep_window_open();
return 0;
}
당신이'있도록 개인 기반을 B1'을 찾으셨습니까? 그렇지 않다면 클래스 D1 : public B1 {...};을 작성하십시오. 그러면 오류 메시지가 적절하고 예상됩니다. 개인 상속의 전체적인 포인트는 기본 클래스를 액세스 할 수 없게 만드는 것입니다. –