Использование класса внутри другого класса

У меня есть, казалось бы, простая проблема, которая кажется популярной, но после поиска на нескольких форумах я так и не нашел ответа: Как вы используете класс внутри другого класса?

Я упростил свою проблему:

class A {
  const int pin;
  public:
  A(int attachPin) : pin(attachPin) {
  }

  void setup() {
    pinMode(pin, INPUT_PULLUP);
  }
};

class B {
  A myA;
  public:
  B(int a_attach) : myA(a_attach) {
  }

  void setup() {
    myA.setup();
  }
};

B test;

void setup() {
   test.setup();
}

void loop() {
}

, 👍0


1 ответ


Лучший ответ:

1

Я думаю, проблема в этой строке B test. Вы определяете переменную, но забыли определить конструктор по умолчанию ( B() ). Вы пытаетесь настроить класс A с неизвестным пином! Чтобы избежать этого, вы можете определить тестовую переменную таким образом B test(2); или таким образом const int test_pin = 2; B-тест(test_pin);. Также, чтобы избежать этой проблемы, вы можете установить значение по умолчанию для конструктора, такого как B(int attach=2) : myA(attach) {}, и определить тестовую переменную, как вы делаете в своем коде Б тест;.

,