Структура данных класса: доступ к членам структуры - PullRequest
0 голосов
/ 24 мая 2019

Я создал простой класс под названием Foo, который содержит член данных Bar, который является структурой.

class Foo
{
  public :
  struct Bar {
    int a;
  };
};

Я бы хотел иметь возможность доступа к членам в структуре либо из функций, которые я определяю в классе, либо из файла драйвера, но я не уверен, как это сделать. Примечание. Я объявил Bar открытым участником, поскольку пытаюсь получить прямой доступ к членам без использования функции get. В моем безумии есть метод, но я вернусь к этому позже, поэтому, пожалуйста, примите, что я хочу, чтобы структура была публичной на данный момент.

Это очень урезанная версия более крупной программы, поэтому, пожалуйста, простите за простоту.

1 Ответ

0 голосов
/ 24 мая 2019

Я создал простой класс под названием Foo, который содержит член данных Bar, который является структурой.

Не совсем.Foo не содержит никаких элементов данных вообще.Он просто определяет тип с именем Foo::Bar.Объект типа Foo::Bar имеет элемент данных int с именем a, но сам объект Foo не имеет подобъектов Bar или int.

Если вы хотитеобъект типа Bar в каждом Foo, вам нужно объявить этого члена с некоторым именем:

class Foo
{
  public :
  struct Bar {
    int a;
  };
  Bar bar;
};

Это позволит вам делать такие вещи, как:

void test() {
    Foo f;
    f.bar.a = 5;
}
...