Почему защищенный член суперкласса не может быть доступен в функции подкласса при передаче в качестве аргумента?

Я получаю ошибку компиляции, в которой я немного запутался. Это на VS2003.

ошибка C2248: «A :: y»: невозможно получить доступ к защищенному члену, объявленному в классе «A»

class A
{
public:
  A() : x(0), y(0) {}
protected:
  int x;
  int y;
};

class B : public A
{
public:
  B() : A(), z(0) {}
  B(const A& item) : A(), z(1) { x = item.y;}
private:
  int z;
};

Проблема с x = item.y;

Доступ указан как защищенный. Почему конструктор класса B не имеет доступа к A :: y?

Ответы на вопрос(3)

Ваш ответ на вопрос