Использование класса внутри другого класса
У меня есть, казалось бы, простая проблема, которая кажется популярной, но после поиска на нескольких форумах я так и не нашел ответа: Как вы используете класс внутри другого класса?
Я упростил свою проблему:
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() {
}
@Titan, 👍0
1 ответ
Лучший ответ:
Я думаю, проблема в этой строке B test
. Вы определяете переменную, но забыли определить конструктор по умолчанию ( B() ). Вы пытаетесь настроить класс A с неизвестным пином! Чтобы избежать этого, вы можете определить тестовую переменную таким образом B test(2);
или таким образом const int test_pin = 2; B-тест(test_pin);
. Также, чтобы избежать этой проблемы, вы можете установить значение по умолчанию для конструктора, такого как B(int attach=2) : myA(attach) {}
, и определить тестовую переменную, как вы делаете в своем коде Б тест;
.
- Недопустимое преобразование из 'char' в 'const char*' [-fpermissive] в строке
- Ошибка компиляции для платы Arduino Nano
- Вызов функций одного класса из другого класса — Обратный вызов
- Ошибка компиляции для любой платы arduino ide 1.8.9
- запрос «атрибута» члена в «объекте», который имеет неклассовый тип «int»
- Что мне делать с StackOverflow при ошибке компиляции?
- Как правильно поместить дескриптор u8g2 в класс
- UECIDE: ошибка компоновщика с библиотекой U8g2