Warum kann in einer Unterklassenfunktion nicht auf ein geschütztes Superklassenmitglied zugegriffen werden, wenn es als Argument übergeben wird?

Ich erhalte einen Kompilierungsfehler, über den ich etwas verwirrt bin. Dies ist auf VS2003.

error C2248: 'A :: y': kann nicht auf geschützte Member zugreifen, die in Klasse 'A' deklariert wurden

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;
};

Das Problem ist mit x = item.y;

Der Zugriff ist als geschützt angegeben. Warum hat der Konstruktor der Klasse B keinen Zugriff auf A :: y?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage