Защищенные данные в родительском классе недоступны в дочернем классе?

Я запутался: я думал, что защищенные данные были доступны для чтения / записи детям данного класса в C ++.

Приведенный ниже фрагмент не компилируется в MS Compiler

class A
{
protected:
  int data;
};

class B : public A
{
  public:

  B(A &a)
  {
    data = a.data;
  }
};

int main()
{
  A a;
  B b = a;
  return 0;
}

Сообщение об ошибке:

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

demoFail.cpp
demoFail.cpp(12) : error C2248: 'A::data' : cannot access protected member declared in class 'A'
        demoFail.cpp(4) : see declaration of 'A::data'
        demoFail.cpp(2) : see declaration of 'A'

Что я делаю неправильно?

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

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