2
Ich definiere zuerst eine Klasse B1 und eine abgeleitete Klasse D1. Dann möchte ich eine Referenz auf B1 definieren und diese auf das D1-Objekt initialisieren, das ich gerade definiert habe. Hier kommt der Fehler, dass "Konvertierung in unzugängliche Basisklasse 'B1' nicht erlaubt ist", weiß ich nicht warum.Umwandlung in unzugängliche Basisklasse ist nicht erlaubt
#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;
}
Meinten Sie eine private Basis zu machen 'B1'? Wenn nicht, mach es zu 'class D1: public B1 {...};' Wenn ja, dann ist die Fehlermeldung korrekt und erwartet - der ganze Punkt der privaten Vererbung besteht darin, die Basisklasse unzugänglich zu machen. –