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

class a
{
 public: 
    int b=0;
};

class c
{
 public:
    a d;
    void print(a bb) {
        cout << bb.b;// здесь к полю можно
    }

    d.b=10;  // здесь к полю нельзя?
};

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


Ответы (1 шт):

Автор решения: Шкраб

Здесь проблема не в обращении к полю, а в том, что это грамматически неверная конструкция: в определении класса ожидается набор объявлений, а вы предоставляете assignment выражение. Если же обратиться к полю внутри объявления, то всё ок:

struct A {
  int a;
};

struct B {
  int b = (b, A{}.a);
};
→ Ссылка