Недоступный тип из-за частного наследования

g ++ запрещает мне доступ к типу только потому, что он оказался частный дедушка. Имеет ли это смысл?

struct A {};

struct B : private A {};

struct C : B {
  void foo(A const& a) {}
};

Компиляция этого дает:

1:10: error: ‘struct A A::A’ is inaccessible
6:12: error: within this context

Моя точка зрения: я никогда не хотел иметь доступ к A как к предку. Фактически, если A является частным предком B , он не должен быть полностью невидимым для всех, кроме B (то есть C )?

Конечно, я мог бы использовать защищенное наследование, но в моем случае это не имеет смысла.

14
задан bitmask 4 November 2011 в 14:50
поделиться