$ cat inheritance.cpp
#include <iostream>
using namespace std;
class A { };
class B : private A { };
int main() {
A* ab = new B;
}
$
$ g++ inheritance.cpp
inheritance.cpp: In function 'int main()':
inheritance.cpp:9: error: 'A' is an inaccessible base of 'B'
$
Я просто не понимаю эту ошибку.
Как я понимаю, и поскольку этот учебник подтверждает, private
наследование должно только изменять, как члены class B
видны внешнему миру.
Я думаю, что частный спецификатор делает больше, чем просто меняет видимость членов class B
.
- Что я получу эту ошибку и что это значит?
- В принципе, что не так, если разрешить этот тип кода на С++? Выглядит совершенно безвредно.